<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.12.RELEASE</version>
com.alibaba.druid.pool.DruidDataSource 多数据源切换不用@Primary指定一个主数据源
ShardingDataSource DruidDataSource 整合
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.12.RELEASE</version>
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<!--<version>2.0.4.RELEASE</version>-->
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
@Configuration
public class MysDruidConfig {
// @Primary
@Bean(name="dOne")
@ConfigurationProperties(prefix = "mysql.one")
public DruidDataSource dataSourceOne(){
DruidDataSource dOne = new DruidDataSource();
dOne.setQueryTimeout(300);
dOne.setTestWhileIdle(true);
dOne.setTestOnBorrow(true);
dOne.setTestOnReturn(true);
dOne.setTimeBetweenEvictionRunsMillis(600000);
dOne.setMinEvictableIdleTimeMillis(300000);
dOne.setUrl("jdbc:mysql://127.0.0.1/xmh");
System.out.println("DruidDataSource************dOne"+dOne.toString()+" "+dOne.getUrl()+" "+dOne.getMaxActive());
return dOne;
}
@Bean(name="dTwo")
@ConfigurationProperties(prefix = "mysql.two")
public DruidDataSource dataSourceTwo(){
DruidDataSource dTwo = new DruidDataSource();
dTwo.setQueryTimeout(300);
dTwo.setTestWhileIdle(true);
dTwo.setTestOnBorrow(true);
dTwo.setTestOnReturn(true);
dTwo.setTimeBetweenEvictionRunsMillis(600000);
dTwo.setMinEvictableIdleTimeMillis(300000);
dTwo.setUrl("jdbc:mysql://127.0.0.1/xmh2");
System.out.println("DruidDataSource************dTwo"+dTwo.toString()+" "+dTwo.getUrl()+" "+dTwo.getMaxActive());
return dTwo;
}
@Autowired
javax.sql.DataSource shardingDataSource;
SpringBootConfiguration s;
@Bean(name = "routeDataSource")
public RouteDataSource dataSource(@Qualifier("dOne")DruidDataSource dOne, @Qualifier("dTwo")DruidDataSource dTwo){
System.out.println("this.shardingDataSource***************"+this.shardingDataSource);
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put("dataSourceOne",dOne);
targetDataSources.put("dataSourceTwo",shardingDataSource);
RouteDataSource dataSource = new RouteDataSource();
dataSource.setTargetDataSources(targetDataSources);
dataSource.setDefaultTargetDataSource(dTwo);
System.out.println("routeDataSource******************"+dataSource);
return dataSource;
}
}
@Mapper
public interface MyTestIbatisSharding extends BaseMapper<String> {
@MyDataSource(dataSourceName="dataSourceTwo")
@Select("select order_id from t_order ")
List<String> selectStr();
}
@Autowired
cn.com.xmh.ibatisMapper.MyTestIbatisSharding MyTestIbatisSharding;
System.out.println(" MyTestIbatisSharding*********** "+MyTestIbatisSharding.selectStr());
spring-boot2以上不能使用_
sharding.jdbc.datasource.names=ds0,ds1
sharding.jdbc.datasource.ds0.type=org.apache.commons.dbcp.BasicDataSource
sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds0.url=jdbc:mysql://localhost:3306/xmh
sharding.jdbc.datasource.ds0.username=root
sharding.jdbc.datasource.ds0.password=admin
sharding.jdbc.datasource.ds1.type=org.apache.commons.dbcp.BasicDataSource
sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds1.url=jdbc:mysql://localhost:3306/xmh2
sharding.jdbc.datasource.ds1.username=root
sharding.jdbc.datasource.ds1.password=admin
sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=user_id
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds${user_id % 2}
sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds${0..1}.t_order_${0..1}
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order_${order_id % 2}
sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=order_id
sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds${0..1}.t_order_item_${0..1}
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item_${order_id % 2}
sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id
springboot引入mybatis的xml配置 commons-dbcp 使用默认数据源
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MyDaoMapperTest {
public List<TUser> queryAll();
}
F:\study-idea\space\myboot\src\main\resources\MyMappers\myDaoTestMapper.xml中namespace设置
<mapper namespace="cn.com.myBatisXml.MyDaoMapperTest">
@Resource
MyDaoMapperTest myDaoMapperTest;
System.out.println(myDaoMapperTest.queryAll());
springboot引入mybatis的xml配置 commons-dbcp 使用默认数据源 使用shardingjdbc 不与DruidDataSource一起使用 @Primary
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-core-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<!--<version>2.0.4.RELEASE</version>-->
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
sharding.jdbc.datasource.names=ds_0,ds_1
sharding.jdbc.datasource.ds_0.type=org.apache.commons.dbcp.BasicDataSource
sharding.jdbc.datasource.ds_0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds_0.url=jdbc:mysql://localhost:3306/xmh
sharding.jdbc.datasource.ds_0.username=root
sharding.jdbc.datasource.ds_0.password=admin
sharding.jdbc.datasource.ds_1.type=org.apache.commons.dbcp.BasicDataSource
sharding.jdbc.datasource.ds_1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds_1.url=jdbc:mysql://localhost:3306/xmh2
sharding.jdbc.datasource.ds_1.username=root
sharding.jdbc.datasource.ds_1.password=admin
sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=user_id
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds_${user_id % 2}
sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds_${0..1}.t_order_${0..1}
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order_${order_id % 2}
sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=order_id
sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds_${0..1}.t_order_item_${0..1}
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item_${order_id % 2}
sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id
for (int i = 0; i < 3; i++) {
Order order = new Order();
order.setUserId(55);
order.setStatus("INSERT_TEST");
order.setOrderId(3);
orderRepository.insert(order);
}
<insert id="insert" useGeneratedKeys="true" keyProperty="orderId">
INSERT INTO t_order (
user_id, status
)
VALUES (
#{userId,jdbcType=INTEGER},
#{status,jdbcType=VARCHAR}
)
</insert>
原文:https://www.cnblogs.com/xingminghui111/p/13940984.html