SpringBoot配置JDBC、MyBatis多数据源

mac2024-05-23  50

SpringBoot配置JDBC、MyBatis多数据源

项目结构MyBatis多数据源配置文件配置类测试类 JDBC多数据源配置文件配置类多数据源配置JDBC配置类 测试类

项目结构

MyBatis多数据源

配置文件

spring: datasource: hikari: ds1: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://127.0.0.1:3306/QCDepartment?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: huafeng ds2: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://127.0.0.1:3306/spring_boot?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: huafeng

配置类

@Configuration @MapperScan(basePackages = "com.luckytiger.multi.data.source.mapper1", sqlSessionTemplateRef = "db1SqlSessionTemplate") public class MyBatis1DataSourceConfig { /** * 生成数据源. @Primary 注解声明为默认数据源 */ @Bean(name = "db1DataSource") @ConfigurationProperties(prefix = "spring.datasource.hikari.ds1") @Primary public DataSource testDataSource() { return DataSourceBuilder.create().build(); } /** * 创建 SqlSessionFactory */ @Bean(name = "db1SqlSessionFactory") @Primary public SqlSessionFactory testSqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/db1/*.xml")); return bean.getObject(); } /** * 配置事务管理 */ @Bean(name = "db1TransactionManager") @Primary public DataSourceTransactionManager testTransactionManager(@Qualifier("db1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "db1SqlSessionTemplate") @Primary public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }

测试类

@Autowired private RemindEventsMapper remindEventsMapper; @Autowired private SecUserMapper secUserMapper; @Test void mybatis1(){ RemindEvents load = remindEventsMapper.load(1); System.out.println(load); } @Test void mybatis2(){ SecUser load = secUserMapper.load(1); System.out.println(load); }

JDBC多数据源

配置文件

spring: datasource: ds1: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://101.37.76.243:3306/QCDepartment?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: huafeng ds2: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://101.37.76.243:3306/spring_boot?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: huafeng

配置类

多数据源配置

@Configuration public class DataSourceConfig { //主数据源配置 ds1数据源 @Primary @Bean(name = "ds1DataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.ds1") public DataSourceProperties ds1DataSourceProperties() { return new DataSourceProperties(); } //主数据源 ds1数据源 @Primary @Bean(name = "ds1DataSource") public DataSource ds1DataSource(@Qualifier("ds1DataSourceProperties") DataSourceProperties dataSourceProperties) { return dataSourceProperties.initializeDataSourceBuilder().build(); } //第二个ds2数据源配置 @Bean(name = "ds2DataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.ds2") public DataSourceProperties ds2DataSourceProperties() { return new DataSourceProperties(); } //第二个ds2数据源 @Bean("ds2DataSource") public DataSource ds2DataSource(@Qualifier("ds2DataSourceProperties") DataSourceProperties dataSourceProperties) { return dataSourceProperties.initializeDataSourceBuilder().build(); } }

JDBC配置类

@Configuration public class JdbcTemplateDataSourceConfig { //JdbcTemplate主数据源ds1数据源 @Primary @Bean(name = "ds1JdbcTemplate") public JdbcTemplate ds1JdbcTemplate(@Qualifier("ds1DataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } //JdbcTemplate第二个ds2数据源 @Bean(name = "ds2JdbcTemplate") public JdbcTemplate ds2JdbcTemplate(@Qualifier("ds2DataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } }

测试类

@Autowired @Qualifier("ds1JdbcTemplate") private JdbcTemplate template1; @Autowired @Qualifier("ds2JdbcTemplate") private JdbcTemplate template2; @Test void contextLoads() { BeanPropertyRowMapper<RemindEvents> rowMapper = new BeanPropertyRowMapper<>(RemindEvents.class); RemindEvents remindEvents = template1.queryForObject("select * from remind_events where id = ?", rowMapper, 1); System.out.println(remindEvents); } @Test void context(){ BeanPropertyRowMapper<SecUser> rowMapper = new BeanPropertyRowMapper<>(SecUser.class); SecUser secUser = template2.queryForObject("select * from sec_user where id = ?", rowMapper, 1); System.out.println(secUser); }
最新回复(0)