Python 官方文档:入门教程 => 点击学习
目录单一数据源配置多个数据源配置多数据源配置文件多数据源配置类最近项目上遇到需要双数据源的来实现需求,并且需要基于Spring Boot,mybatis的方式来实现,在此做简单记录。
最近项目上遇到需要双数据源的来实现需求,并且需要基于Spring Boot,mybatis的方式来实现,在此做简单记录。
单一数据源配置的话并没有什么特别的,在spring boot框架下,只需要在配置文件内添加对应的配置项即可,spring boot会自动初始化需要用到的bean。
配置信息如下。这里使用的是德鲁伊的数据源配置方式
#datasource配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.Mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxx
spring.datasource.username=root
spring.datasource.passWord=123456
#mybatis配置
#mybatis xmlMapper文件路径
mybatis.mapper-locations=classpath:META-INF/mybatis/mapper
@Configuration
public class OdsMybatisConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
@Primary
public DataSource odsDataSource(){
return DataSourceBuilder.create().build();
}
@Bean
@Primary
public sqlSessionFactory odsSqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
//设置mapper.xml文件路径
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:META-INF/mybatis/mapper
@Configuration
public class WmsMybatisConfig {
@Bean
@ConfigurationProperties(prefix = "second.datasource")
@Qualifier("wmsDatasource")
public DataSource wmsDataSource(){
return DataSourceBuilder.create().build();
}
@Bean
@Qualifier("wmsSqlSessionFactory")
public SqlSessionFactory wmsSqlSessionFactory(@Qualifier("wmsDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:META-INF/mybatis/wms/mapper/*Mapper.xml"));
bean.getObject();
SqlSessionFactory sqlSessionFactory = bean.getObject();
//设置wms数据源额外的mapper.java注册
//sqlSessionFactory.getConfiguration().addMappers("com.xx.maper");
return sqlSessionFactory;
}
@Bean
public DataSourceTransactionManager wmsTransactionManager(@Qualifier("wmsDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
@Qualifier("wmsSqlSessionTemplate")
public SqlSessionTemplate wmsSqlSessionTemplate( @Qualifier("wmsSqlSessionFactory") SqlSessionFactory wmsSqlSessionFactory) throws Exception {
return new SqlSessionTemplate(wmsSqlSessionFactory);
}
}
通过上面的配置就可以实现双数据源配置,下面是使用方式。
//依赖注入第二个数据源的SqlSession
@Resource
@Qualifier("wmsSqlSessionTemplate")
SqlSessionTemplate wmsSqlSessionTemplate;
//使用时手动获取Mapper然后调用接口方法
wmsSqlSessionTemplate.getMapper(ReturnResultRecoderMapper.class).selectTest()
最后需要注意一点就是,使用上面的配置方式,mybatis的结果处理器对下划线结果集合并没有自动转换为驼峰方式,需要手动在sql中定义别名。
例如实体
class People{
private String peopleGender;
}
mybatis执行sql,结果集映射为People类。
sekect people_gender from people;
people_gender这个结果无法自动映射到peopleGender,需要执行以下sql才能映射上
sekect people_gender as peopleGendler from people;
所以这个配置过程应该是漏了某些配置导致结果处理器的名称映射不起作用,这个问题先mark。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: spring boot下mybatis配置双数据源的实例
本文链接: https://lsjlt.com/news/136997.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0