项目创建完成后,添加 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 的配置,不同于 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 就可以操作不同的数据源。
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 基础语法 | 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 |
最后
自我介绍一下,小编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开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!