框架:springboot+mybatis
数据库:mysql5.7+sqlserver2012
dynamic-datasource3.5.0(实现多数据源)
添加dynamic-datasource的依赖
com.baomidou dynamic-datasource-spring-boot-starter3.5.0
配置数据源
server:
port: 8081
spring:
#全局返回时间格式
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Shanghai
servlet:
multipart:
enabled: true
file-size-threshold: 0B
maxFileSize: 100MB
maxRequestSize: 1000MB
datasource:
hikari:
minimum-idle: 4
maximum-pool-size: 16
connection-timeout: 10000
idle-timeout: 30000
connection-init-sql: set names utf8mb4
dynamic:
primary: mysql
datasource:
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/crud?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: root
password: root
sqlserver:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;Database=crud
username: sa
password: 123456
mysql1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/crudd?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: root
password: root
mybatis:
type-aliases-package: com.wz.demo.entity
mapper-locations: classpath:*
public interface TransTestMapper {
@DS("sqlserver")
List selectLike(TransTest transTest);
@DS("sqlserver")
int insertUser(TransTest transTest);
}
package com.wz.demo.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.wz.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
@DS("mysql")
public interface UserMapper {
List getAll();
int deleteId(int id);
int insertUser(User user);
int updateUser(User user);
List selectLike(User user);
@DS("sqlserver")
List selectSql(User user);
@DS("mysql1")
int insertMysql1User(User user);
}
多数据源事务可以直接在方法上写这个@DSTransactional注解
@Override
@DSTransactional
public int transInsert(TransTest transTest) {
User user = new User();
user.setId(transTest.getId());
user.setPassword(transTest.getPassword());
user.setAddress(transTest.getAddress());
user.setName(transTest.getName());
userMapper.insertUser(user);
userMapper.insertMysql1User(user);
transTestMapper.insertUser(transTest);
return 1;
}
注意:一开始我的dynamic-datasource pom依赖版本是2.5.4,发现这个版本用不了这个注解,换成3.5.0版本就可以用了
代码都已经上传至gitee上
https://gitee.com/wen-zhan/springboot



