mybatis generator覆盖原来的_spring整合mybatis实现多数据源
点击上方蓝字关注并置顶公众号,每天第一时间获取最新干货知识 前言最近项目中遇到了多数据源的问题。也是试了好几种办法,有不少坑,特意来记录下。多数据源,就是在一个项目中,要向多个数据库交互。我遇到的场景就是,要查询自己本地的数据向多个不同的数据源插入数据。你要保证的是,首先,你原本的数据源不动,因为你不能因为这一个需求,就把原来的数据源给切换了,那之前的功能不就是瞎了。所以说,...
点击上方蓝字关注并置顶公众号,每天第一时间获取最新干货知识

前言
最近项目中遇到了多数据源的问题。也是试了好几种办法,有不少坑,特意来记录下。
多数据源,就是在一个项目中,要向多个数据库交互。
我遇到的场景就是,要查询自己本地的数据向多个不同的数据源插入数据。
你要保证的是,首先,你原本的数据源不动,因为你不能因为这一个需求,就把原来的数据源给切换了,那之前的功能不就是瞎了。所以说,最主要的就是,你要另外提供新的数据源来处理数据。互不干扰。
这里我用到的是mybatis+spring的方式。当然你可以用jdbc直连的方式。不推荐,太麻烦,sql写起来费劲。

1、引入依赖
新建sringboot项目
<dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>1.1.1version>dependency><dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.47version>dependency>
2、mybatis配置文件
db.properties
#xc1mysql1.driver=com.mysql.jdbc.Drivermysql1.url=jdbc:mysql://localhost:3306/xc1?useSSL=falsemysql1.username=rootmysql1.password=123456#xc2mysql2.driver=com.mysql.jdbc.Drivermysql2.url=jdbc:mysql://localhost:3306/xc2?useSSL=falsemysql2.username=rootmysql2.password=123456
configuration.xml
/span> "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="db.properties"/> <environments default="dev1"> <environment id="dev1"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${mysql1.driver}"/> <property name="url" value="${mysql1.url}"/> <property name="username" value="${mysql1.username}"/> <property name="password" value="${mysql1.password}"/> dataSource> environment> <environment id="dev2"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${mysql2.driver}"/> <property name="url" value="${mysql2.url}"/> <property name="username" value="${mysql2.username}"/> <property name="password" value="${mysql2.password}"/> dataSource> environment> environments> <mappers> <mapper resource="generator/UserDao.xml"/> mappers>configuration>
3、实现插入
import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class Test { public static void main(String[] args) throws IOException { //配置文件的名称 String resource = "configuration.xml"; //通过Mybatis包中的Resources对象很轻松的获取到配置文件 Reader reader = Resources.getResourceAsReader(resource); //通过SqlSessionFactoryBuilder创建 第二个参数是指定环境 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader,"dev2"); //获得session实例 SqlSession session =sqlSessionFactory.openSession(); UserDao mapper = session.getMapper(UserDao.class); User user = new User(); user.setName("xx"); //完成数据库的插入 mapper.insert(user); session.commit(); session.close(); System.out.println("ok"); }}
总结
这样就轻松实现动态数据源的切换了,只需要改变环境参数就行。非常的方便。
创作不易,如果对你有帮助,麻烦三连。点赞,在看,转发。


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)