springboot + mybatis + 多数据源

http://www.cnblogs.com/java-zhao/p/5413845.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用MyBatis实现多数据源配置,可以通过以下步骤实现: 1. 在`application.properties`文件中配置多个数据源的连接信息,例如: ``` # 数据源1 spring.datasource.primary.url=jdbc:mysql://localhost:3306/db1 spring.datasource.primary.username=user1 spring.datasource.primary.password=pass1 spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver # 数据源2 spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2 spring.datasource.secondary.username=user2 spring.datasource.secondary.password=pass2 spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver ``` 2. 创建多个数据源的配置类,分别继承`org.springframework.boot.autoconfigure.jdbc.DataSourceProperties`类,并使用`@ConfigurationProperties`注解来注入对应的配置信息,例如: ```java @Configuration public class PrimaryDataSourceConfig extends DataSourceProperties { @Bean @Primary public DataSource dataSource() { return createDataSource(); } private DataSource createDataSource() { return DataSourceBuilder.create().url(getUrl()) .username(getUsername()).password(getPassword()) .driverClassName(getDriverClassName()).build(); } } @Configuration public class SecondaryDataSourceConfig extends DataSourceProperties { @Bean public DataSource dataSource() { return createDataSource(); } private DataSource createDataSource() { return DataSourceBuilder.create().url(getUrl()) .username(getUsername()).password(getPassword()) .driverClassName(getDriverClassName()).build(); } } ``` 3. 创建多个`SqlSessionFactory`,并分别注入对应的数据源,例如: ```java @Configuration @MapperScan(basePackages = "com.example.mapper.primary", sqlSessionFactoryRef = "primarySqlSessionFactory") public class PrimaryMyBatisConfig { @Bean @Primary public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean.getObject(); } } @Configuration @MapperScan(basePackages = "com.example.mapper.secondary", sqlSessionFactoryRef = "secondarySqlSessionFactory") public class SecondaryMyBatisConfig { @Bean public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean.getObject(); } } ``` 4. 在`Mapper`接口上使用`@Qualifier`注解指定对应的`SqlSessionFactory`,例如: ```java @Mapper public interface PrimaryUserMapper { @Select("SELECT * FROM user") @Results(id = "userMap", value = { @Result(property = "id", column = "id"), @Result(property = "name", column = "name") }) List<User> findAll(); @Insert("INSERT INTO user(name) VALUES(#{name})") @Options(useGeneratedKeys = true, keyProperty = "id") void save(User user); } @Mapper public interface SecondaryUserMapper { @Select("SELECT * FROM user") @Results(id = "userMap", value = { @Result(property = "id", column = "id"), @Result(property = "name", column = "name") }) List<User> findAll(); @Insert("INSERT INTO user(name) VALUES(#{name})") @Options(useGeneratedKeys = true, keyProperty = "id") void save(User user); } ``` 这样就可以在同一个应用中使用多个数据源了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值