关于多数据源的配置,前面和大伙介绍过 JdbcTemplate 多数据源配置,那个比较简单,本文来和大伙说说 MyBatis 多数据源的配置。前端
其实关于多数据源,个人态度仍是和以前同样,复杂的就直接上分布式数据库中间件,简单的再考虑多数据源。这是项目中的建议,技术上的话,固然仍是各类技术都要掌握的。vue
首先须要建立 MyBatis 项目,项目建立和前文的同样,添加 MyBatis、 MySQL 以及 Web 依赖:java
项目建立完成后,添加 Druid 依赖,和 JdbcTemplate 同样,这里添加 Druid 依赖也必须是专为 Spring Boot 打造的 Druid,不能使用传统的 Druid。完整的依赖以下:mysql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> <scope>runtime</scope> </dependency>
接下来配置多数据源,这里基本上仍是和 JdbcTemplate 多数据源的配置方式一致,首先在 application.properties 中配置数据库基本信息,而后提供两个 DataSource 便可,这里我再把代码贴出来,里边的道理条条框框的,大伙能够参考前面的文章,这里再也不赘述。web
application.properties 中的配置:面试
spring.datasource.one.url=jdbc:mysql:///test01?useUnicode=true&characterEncoding=utf-8 spring.datasource.one.username=root spring.datasource.one.password=root spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.two.url=jdbc:mysql:///test02?useUnicode=true&characterEncoding=utf-8 spring.datasource.two.username=root spring.datasource.two.password=root spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
而后再提供两个 DataSource,以下:正则表达式
@Configuration public class DataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource.one") DataSource dsOne() { return DruidDataSourceBuilder.create().build(); } @Bean @ConfigurationProperties(prefix = "spring.datasource.two") DataSource dsTwo() { return DruidDataSourceBuilder.create().build(); } }
接下来则是 MyBatis 的配置,不一样于 JdbcTemplate,MyBatis 的配置要稍微麻烦一些,由于要提供两个 Bean,所以这里两个数据源我将在两个类中分开来配置,首先来看第一个数据源的配置:redis
@Configuration @MapperScan(basePackages = "org.javaboy.mybatis.mapper1",sqlSessionFactoryRef = "sqlSessionFactory1",sqlSessionTemplateRef = "sqlSessionTemplate1") public class MyBatisConfigOne { @Resource(name = "dsOne") DataSource dsOne; @Bean SqlSessionFactory sqlSessionFactory1() { SqlSessionFactory sessionFactory = null; try { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dsOne); sessionFactory = bean.getObject(); } catch (Exception e) { e.printStackTrace(); } return sessionFactory; } @Bean SqlSessionTemplate sqlSessionTemplate1() { return new SqlSessionTemplate(sqlSessionFactory1()); } }
建立 MyBatisConfigOne 类,首先指明该类是一个配置类,配置类中要扫描的包是 org.javaboy.mybatis.mapper1 ,即该包下的 Mapper 接口将操做 dsOne 中的数据,对应的 SqlSessionFactory 和 SqlSessionTemplate 分别是 sqlSessionFactory1 和 sqlSessionTemplate1,在 MyBatisConfigOne 内部,分别提供 SqlSessionFactory 和 SqlSessionTemplate 便可, SqlSessionFactory 根据 dsOne 建立,而后再根据建立好的SqlSessionFactory 建立一个 SqlSessionTemplate。算法
这里配置完成后,依据这个配置,再来配置第二个数据源便可:spring
@Configuration @MapperScan(basePackages = "org.javaboy.mybatis.mapper2",sqlSessionFactoryRef = "sqlSessionFactory2",sqlSessionTemplateRef = "sqlSessionTemplate2") public class MyBatisConfigTwo { @Resource(name = "dsTwo") DataSource dsTwo; @Bean SqlSessionFactory sqlSessionFactory2() { SqlSessionFactory sessionFactory = null; try { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dsTwo); sessionFactory = bean.getObject(); } catch (Exception e) { e.printStackTrace(); } return sessionFactory; } @Bean SqlSessionTemplate sqlSessionTemplate2() { return new SqlSessionTemplate(sqlSessionFactory2()); } }
好了,这样 MyBatis 多数据源基本上就配置好了,接下来只须要在 org.javaboy.mybatis.mapper1 和 org.javaboy.mybatis.mapper2 包中提供不一样的 Mapper,Service 中注入不一样的 Mapper 就能够操做不一样的数据源。
org.javaboy.mybatis.mapper1 中的 mapper:
public interface UserMapperOne { List<User> getAllUser(); }
对应的 XML 文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.javaboy.mybatis.mapper1.UserMapperOne"> <select id="getAllUser" resultType="org.javaboy.mybatis.model.User"> select * from t_user; </select> </mapper>
org.javaboy.mybatis.mapper2 中的 mapper:
public interface UserMapper { List<User> getAllUser(); }
对应的 XML 文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.javaboy.mybatis.mapper2.UserMapper"> <select id="getAllUser" resultType="org.javaboy.mybatis.model.User"> select * from t_user; </select> </mapper>
接下来,在 Service 中注入两个不一样的 Mapper,不一样的 Mapper 将操做不一样的数据源。
好了,关于 MyBatis 多数据源本文就先说到这里。
重磅今年 5 月份的时候,松哥发了一个视频资源库,当时和你们说,这个资源库会按期更新,后来却迟迟未更新,其实不是我没资源了,是由于当时的关键字是我一个一个在微信后台配置的,配置到后面发现,后台配置关键字有数量上限,无法继续配置了,因此这事就搁置下来了。
九月份松哥上线了本身的服务,和微信的后台对接起来,具体实现你们能够参考这两篇文章:
如今再配置关键字就没有限制了。因而最近抽空把资源更新了一波,废话很少说,你们在公众号【江南一点雨】后台回复相应的口令,就能够获取相应的视频下载地址。
资源名称 | 口令 |
---|---|
Java 基础语法 | javaboy4096 |
Java 面向对象 | javaboy6148 |
JavaSE 飞机大战项目 | javaboy2053 |
深刻面向对象和数组 | javaboy8200 |
Java 经常使用类详解 | javaboy4105 |
Java 异常机制解析 | javaboy6157 |
Java 集合与数据结构 | javaboy2062 |
JavaIO 流全解析 | javaboy8209 |
深刻理解 Java 多线程 | javaboy4114 |
Java 网络编程 | javaboy6166 |
手动开发一个 Web 服务器 | javaboy2071 |
深刻理解 Java 注解+反射 | javaboy8218 |
Java23 种设计模式 | javaboy4123 |
学会 Java 正则表达式 | javaboy6175 |
JDBC 详解 | javaboy2080 |
独立开发 SORM 框架 | javaboy8227 |
快人一步,Java10 新特性全解析 | javaboy4132 |
Java 数据结构和算法 | javaboy6184 |
深刻理解 Java 虚拟机 | javaboy2089 |
Java 解析XML文件 | javaboy8236 |
资源名称 | 口令 |
---|---|
Oracle 数据库安装及简单 SQL | javaboy4141 |
Oracle 帐户管理及查询语句 | javaboy6193 |
Oracle 中的函数 | javaboy2098 |
Oracle 中的子查询 | javaboy8245 |
Oracle 中常见的表操做 | javaboy4150 |
Oracle 中的数据备份 | javaboy6202 |
MySQL 基础 | javaboy2107 |
PowerDesigner 教程 | javaboy8254 |
JDBC 操做数据库 | javaboy4159 |
MySQL 优化 | javaboy6211 |
Oracle 高级课程 | javaboy2116 |
数据库与 SQL 优化 | javaboy6283 |
数据库集群与高并发 | javaboy2188 |
资源名称 | 口令 |
---|---|
HTML 入门教程 | javaboy8263 |
CSS 教程 | javaboy4168 |
JavaScript 视频教程 | javaboy6220 |
jQuery 视频教程 | javaboy2125 |
EasyUI 视频教程 | javaboy8272 |
Servlet 基础 | javaboy4177 |
Servlet 中的 Request 和 Response | javaboy6229 |
Servlet 请求转发与重定向 | javaboy2134 |
Session 和 Cookie | javaboy8281 |
JSP 详解 | javaboy4186 |
用户管理系统实战 | javaboy6238 |
Ajax 详解 | javaboy2143 |
EL 和 JSTL | javaboy8290 |
过滤器详解 | javaboy4195 |
监听器详解 | javaboy6247 |
KnockoutJS 实战视频 | javaboy2152 |
资源名称 | 口令 |
---|---|
IntelliJIDEA 视频教程 | javaboy4285 |
Java 高并发秒杀方案 | javaboy8299 |
Activiti 工做流实战解析 | javaboy4204 |
Java 并发编程与高并发实战 | javaboy6256 |
Linux 快速入门 | javaboy2161 |
Maven 详解 | javaboy8308 |
Git 应用详解 | javaboy4213 |
Svn 入门教程 | javaboy6265 |
高并发编程与线程池 | javaboy2170 |
系统优化与 JVM 调优 | javaboy8317 |
Java 编程规范 | javaboy4222 |
AIO、BIO、NIO 详解 | javaboy6274 |
Netty 高级视频教程 | javaboy2179 |
ActiveMQ 消息中间详解 | javaboy8326 |
单点登陆视频教程 | javaboy4231 |
Dubbo 详解 | javaboy8335 |
Redis 全解析 | javaboy4240 |
VSFTPD+NGINX 视频教程 | javaboy6292 |
MyBatis 视频教程 | javaboy2197 |
Spring4 视频教程 | javaboy8344 |
SpringMVC 视频教程 | javaboy4249 |
SSM 框架整合视频教程 | javaboy6301 |
RBAC 权限控制视频教程 | javaboy2206 |
Hibernate4 视频教程 | javaboy8353 |
Jfinal 视频教程 | javaboy4258 |
Shiro 视频教程 | javaboy6310 |
Solr 视频教程 | javaboy2215 |
Struts2 视频教程 | javaboy8362 |
Nginx 视频教程 | javaboy4267 |
Redis 缓存详解 | javaboy6319 |
JVM 虚拟机优化 | javaboy2224 |
Zookeeper 详解视频 | javaboy8371 |
Linux 基本操做 | javaboy6328 |
架构师面试攻略(文档) | javaboy2233 |
架构师面试攻略(视频) | javaboy8380 |
JUC 视频教程 | javaboy6400 |
MySQL 高级教程 | javaboy2305 |
Java 邮件开发教程 | javaboy8452 |
Maven 实战视频 | javaboy8443 |
本身 DIY 一个 Tomcat | javaboy4339 |
资源名称 | 口令 |
---|---|
HTML5 新特性 | javaboy4276 |
AngularJS 视频教程 | javaboy6337 |
Grunt 视频教程 | javaboy2242 |
Gulp 视频教程 | javaboy8389 |
Webpack 视频教程 | javaboy4294 |
Bootstrap 视频教程 | javaboy6346 |
CSS3 视频教程 | javaboy2251 |
ES6 视频教程 | javaboy8398 |
HTML5 核心技术 | javaboy4303 |
HTML5 实战 | javaboy6355 |
HTML5 项目实战 | javaboy2260 |
JS 模块化视频教程 | javaboy8407 |
less 视频教程 | javaboy4312 |
NodeJS 视频教程 | javaboy6364 |
React 视频教程 | javaboy2269 |
Zepto 视频教程 | javaboy8416 |
HTML+CSS 实战视频 | javaboy4321 |
JavaScript140 集 | javaboy6373 |
jQuery 视频教程 | javaboy2278 |
JavaScript 高级语法视频教程 | javaboy8425 |
Vue 项目实战视频 | javaboy4330 |
CSS3 特效实战 | javaboy6382 |
HTML5 特效实战 | javaboy2287 |
HTML5+Canvas 实现刮刮卡 | javaboy8434 |
Gradle 从入门到精通 | javaboy6391 |
mpvue 项目实战 | javaboy2296 |
Vue 最新最全视频教程 | javaboy4348 |
资源名称 | 口令 |
---|---|
Linux 操做系统 | javaboy4357 |
Linux 基本命令 | javaboy6409 |
Linux 文件安装 | javaboy2314 |
Shell 编程 | javaboy8461 |
网络基础知识 | javaboy4366 |
LVS 集群与高并发 | javaboy6418 |
Nginx 和高并发 | javaboy2323 |
keepalive 和单点故障 | javaboy8470 |
HDFS 分布式文件系统 | javaboy4375 |
mapreduce 分布式计算 | javaboy6427 |
YARN 资源管理与任务调度 | javaboy2332 |
mapreduce 计算案例 | javaboy8479 |
HIVE 视频教程 | javaboy4384 |
Hbase 数据库详解 | javaboy6436 |
zookeeper 协同处理 | javaboy2341 |
CDH 使用 | javaboy8488 |
HUE 使用 | javaboy4393 |
IMPALA 详解 | javaboy6445 |
oozie 详解 | javaboy2350 |
elasticsearch 详解 | javaboy8497 |
Redis 内存数据 | javaboy4402 |
Scala 入门 | javaboy6454 |
Spark 详解 | javaboy2359 |
Spark 高级 | javaboy8506 |
Spark-Stream 流式计算 | javaboy4411 |
Kafka 分布式消息队列 | javaboy6463 |
STORM 流式计算框架 | javaboy2368 |
Python 语言基础 | javaboy8515 |
回归算法 | javaboy4420 |
分类算法、决策树 | javaboy6472 |
聚类算法、微博案例 | javaboy2377 |
推荐算法 | javaboy8524 |
大型电商日志分析(项目实战) | javaboy4429 |
智慧交通(项目实战) | javaboy6481 |
智能 App(项目实战) | javaboy2386 |
资源名称 | 口令 |
---|---|
人工智能入门 | javaboy8533 |
线性回归深刻与代码实现 | javaboy4438 |
梯度降低算发实现 | javaboy6490 |
逻辑回归详解和应用 | javaboy2395 |
分类项目案例与神经网络算法 | javaboy8542 |
多分类、决策树分类与随机森林分类 | javaboy4447 |
分类评估与聚类 | javaboy6499 |
密度聚类与谱聚类 | javaboy2404 |
Tensorflow 安装并实现线性回归 | javaboy8551 |
TensorFlow 深刻、TensorFlow可视化 | javaboy4456 |
DNN 深度神经网络手写图片识别 | javaboy6508 |
TensorBoard 可视化 | javaboy2413 |
卷积神经网络、CNN 识别图片 | javaboy8560 |
卷积神经网络深刻,AlexNet 模型实现 | javaboy4465 |
Keras 深度学习框架 | javaboy6517 |
资源名称 | 口令 |
---|---|
ZooKeeper 简介 | javaboy2422 |
ZooKeeper 安装 | javaboy8569 |
ZooKeeper 基本数据模型 | javaboy4474 |
基于 Linux 的 ZK 客户端命令 | javaboy6526 |
选举模式和 ZK 集群安装 | javaboy2431 |
JavaAPI 操做 ZK | javaboy8578 |
ApacheCurator 客户端 | javaboy4483 |
Dubbo 入门到重构服务 | javaboy6535 |
分布式锁 | javaboy2440 |
Zookeeper 总结 | javaboy8587 |
资源名称 | 口令 |
---|---|
OA 办公自动化项目1 | javaboy4492 |
OA 办公自动化项目2 | javaboy6544 |
OA 办公自动化项目3 | javaboy2449 |
OA 办公自动化项目4 | javaboy8596 |
备锋客户关系管理(CRM)系统 | javaboy4501 |
百战客户关系管理系统 | javaboy6553 |
宅急送项目 | javaboy2458 |
高仿人人网项目 | javaboy8605 |
Java 邮件开发项目 | javaboy4510 |
在线支付实战视频 | javaboy6562 |
俄罗斯方块游戏实战 | javaboy2467 |
贪吃蛇视频教程 | javaboy8614 |
交通灯管理系统 | javaboy4519 |
银行业务调度系统实战 | javaboy6571 |
供应链系统实战视频 | javaboy2476 |
网上商城项目实战 | javaboy8623 |
医药采购平台管理系统 | javaboy4528 |
点餐系统实战 | javaboy6580 |
杰信商贸 SSM 版 | javaboy2485 |
国家税务协同平台项目 | javaboy8632 |
javaWeb 聊天室 | javaboy4537 |
网上书店 | javaboy6589 |
手机进销存系统 | javaboy2494 |
QQ 聊天器 | javaboy8641 |
ERP 项目 | javaboy4546 |
坦克大战 | javaboy6598 |
五子棋游戏 | javaboy2503 |
报名系统 Activity | javaboy8650 |
OA 供应链系统 | javaboy4555 |
用户管理系统 | javaboy6607 |
JavaWeb 图书商城 | javaboy2512 |
VIP 商场 | javaboy8659 |
企业招聘系统 | javaboy4564 |
博客系统项目 | javaboy6616 |
超级玛丽 | javaboy2521 |
成绩管理系统 | javaboy8668 |
我的理财系统 | javaboy4573 |
人事管理系统 | javaboy6625 |
JBPM 采购申请系统 | javaboy2530 |
电子商务网站 | javaboy8677 |
跨平台 App 开发 | javaboy4582 |
资源名称 | 口令 |
---|---|
Docker 教程 | docker |
Redis 教程 | redis |
RocketMQ 教程 | rocketmq |
Java8 新特性文档 | java8 |
设计模式教程 | 设计模式 |
网络协议教程 | 网络 |
netty 教程 | netty |
web 全栈指南 | web全栈 |