Spring Boot2 系列教程(二十二)整合 MyBatis 多数据源

在这里插入图片描述

项目创建完成后,添加 Druid 依赖,和 JdbcTemplate 一样,这里添加 Druid 依赖也必须是专为 Spring Boot 打造的 Druid,不能使用传统的 Druid。完整的依赖如下:

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

com.alibaba

druid-spring-boot-starter

1.1.10

mysql

mysql-connector-java

5.1.28

runtime

多数据源配置


接下来配置多数据源,这里基本上还是和 JdbcTemplate 多数据源的配置方式一致,首先在 application.properties 中配置数据库基本信息,然后提供两个 DataSource 即可,这里我再把代码贴出来,里边的道理条条框框的,大伙可以参考前面的文章,这里不再赘述。

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 配置


接下来则是 MyBatis 的配置,不同于 JdbcTemplate,MyBatis 的配置要稍微麻烦一些,因为要提供两个 Bean,因此这里两个数据源我将在两个类中分开来配置,首先来看第一个数据源的配置:

@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。

这里配置完成后,依据这个配置,再来配置第二个数据源即可:

@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 就可以操作不同的数据源。

mapper 创建


org.javaboy.mybatis.mapper1 中的 mapper:

public interface UserMapperOne {

List getAllUser();

}

对应的 XML 文件:

<?xml version="1.0" encoding="UTF-8" ?>

select * from t_user;

org.javaboy.mybatis.mapper2 中的 mapper:

public interface UserMapper {

List getAllUser();

}

对应的 XML 文件:

<?xml version="1.0" encoding="UTF-8" ?>

select * from t_user;

接下来,在 Service 中注入两个不同的 Mapper,不同的 Mapper 将操作不同的数据源。

好了,关于 MyBatis 多数据源本文就先说到这里。

重磅

==============================================================

今年 5 月份的时候,松哥发了一个视频资源库,当时和大家说,这个资源库会定期更新,后来却迟迟未更新,其实不是我没资源了,是因为当时的关键字是我一个一个在微信后台配置的,配置到后面发现,后台配置关键字有数量上限,没法继续配置了,所以这事就搁置下来了。

九月份松哥上线了自己的服务,和微信的后台对接起来,具体实现大家可以参考这两篇文章:

现在再配置关键字就没有限制了。于是最近抽空把资源更新了一波,废话不多说,大家在公众号【江南一点雨】后台回复相应的口令,就可以获取相应的视频下载地址。

Java 基础


| 资源名称 | 口令 |

| :-- | — |

| 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 |

Web 基础


| 资源名称 | 口令 |

| :-- | — |

| 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 |

Java 高级


| 资源名称 | 口令 |

| :-- | — |

| 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 |

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
| jQuery 视频教程 | javaboy2278 |

| JavaScript 高级语法视频教程 | javaboy8425 |

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-D6NnLZ9t-1714961311566)]

[外链图片转存中…(img-n5L0xvxH-1714961311566)]

[外链图片转存中…(img-Pz2x4Liy-1714961311566)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值