關於多數據源的配置,前面和大夥介紹過 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全棧 |
好了,本次就先更新這麼多,若是這裏沒有你想要的,也也能夠留言說說你須要的資料,鬆哥會及時更新資源哦。 另外,你們在公衆號後臺回覆 資源 ,也能夠獲取本文電子版。
若是這些資源幫助到你了,歡迎轉發給更多小夥伴哦。