1,用切面的方式注解区别,在切面中切换执行的数据源
2,不同的文件夹不同的mapper扫描,不同的mapper不同的数据源模板
下面是2实例:
1 使用mybatis注解需要的配置。如下面的代码所示,使用@MapperScan来扫描注册mybatis数据库接口类,其中basePackages属性表明接口类所在的包,sqlSessionTemplateRef表明接口类使用的SqlSessionTemplate。如果项目需要配置两个数据库,@MapperScan也需要分别配置。
@Configuration
@MapperScan(basePackages = "com.tigerobo.mysteel.du.table.mapper.index", sqlSessionTemplateRef = "indexSqlSessionTemplate")
public class IndexMybatisConfiguration {
@Bean(name = "indexSqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("indexSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "indexSqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("indexDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setConfigLocation(resolver.getResource("classpath:mybatis/mybatis-config.xml"));
bean.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/index/*.*"));
return bean.getObject();
}
@Bean(name = "indexDataSource")
@ConfigurationProperties(prefix = "db.index")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
package com.tigerobo.mysteel.du.table.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.tigerobo.mysteel.du.table.mapper.news", sqlSessionTemplateRef = "newsSqlSessionTemplate")
public class NewsMybatisConfiguration {
@Bean(name = "newsSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("newsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean(name = "newsSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("newsDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setConfigLocation(resolver.getResource("classpath:mybatis/mybatis-config.xml"));
bean.setMapperLocations(resolver.getResources("classpath:mybatis/mapper/news/*.xml"));
return bean.getObject();
}
@Bean(name = "newsDataSource")
@ConfigurationProperties(prefix = "db.news")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
2 mybatis注解介绍
mybatis3支持多个java注解,下面介绍几个基本的注解。
@Insert
@Insert("insert into t_user(name,age,gender) values (#{name},#{age},#{gender})")
public int addUser(User user) throws DataAccessException;
如上面的代码所示,使用@Insert注解可以在()中直接写sql语句,传参可以用#{}实现,其中name字段名直接对应User类中的name字段,肿么样,有没有很直观方便:)
@Select
@Select("select age,gender from t_user where name={name}")
public User queryUser(String name) throws DataAccessException;
@Select 注解所查询出的字段可以直接绑定到User类中对应的字段中,由于在类中可以import对应的类,免去了在xml中配置结果集的麻烦。
@SelectKey
@SelectKey(statement = "select max(id) from t_id", before = true, resultType = long.class, keyProperty = "id")
@Insert("insert into t_user(id,name,age,gender) values (#{id},#{name},#{age},#{gender})")
public int addUser(User user) throws DataAccessException;
@SelectKey注解用于查询一下需要的前置字段,如上面的代码所示先查出id字段的值,然后插入到t_user表中,一般配合@Insert和@Update
注解使用。
相关推荐
springboot多数据源配置
通过简单的demo实现SpingBoot多数据源配置并动态切换多数据源
springboot配置多数据源,mysql,sqlserver;真实可用;
springboot2.0多数据源集成hibernate配置hibernateDaoSupport, dao层继承hibernateDaoSupport, 不使用jpa方式。
Spring Boot+Jpa多数据源配置Demo,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate
springboot实现对mysql数据库多数据源,通过配置文件设置主数据源和其他数据源访问不同的数据库
用springboot 集成mybatis多数据源,用aop实现的动态切换,支持事务,不会使aop动态切换失效。注意:此代码不涉及分布式事务,如果需要分布式事务 需要采取其他方案。
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
springboot+mybatis多数据源配置整合。一个最简单的测试用例。实现了数据库数据处理及springboot多数据源问题。亲测
SpringBoot整合JDBC&Druid;数据源示例,整合看一下监控页面,拿来即用,省时省力,增加了自定义配置,注册自己的配置参数。
技术架构:springboot2.0 + mybatis + druid, 数据库:Oracle,Mysql 数据库分离调试,针对不同数据库情况
本资源使用SpringBoot整合Oracle数据库连接双数据源,源码已进行测试真是有效,使用时更改bootstrap.yml数据库配置即可
基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。一个基于springboot的快速集成多数据源的启动器。支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库...
一个springboot的多数据配置,从mapper到controller完整的一个业务流程
springboot多数据源切换mysql+sql server,该事例代码demo,下载下来就能使用,使用工具idea,自行安装mysql和sql server
SpringBoot + mybatis-plus + druid 实现mySql与Orcl双数据源
多数据源配置,使用了数据库连接池,并且是多数据源,分也不要多了,2分,有什么疑问可以指出,或者不足也可以一起学习
SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver)手动切换示例代码 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135701561
springboot多数据源案列,Java多数据源,springboot配置多数据源案列