接
本文介绍使用spring-data-jpa连接mycat实现应用的读写分离.
系统环境spring-boot 1.4.3-RELEASE
jdk1.8
进入正题application.yml配置文件
这个很传统,指定mysql以及datasource就可以.
特别说一句:mycat跟应用是相互独立的,mycat后边的mysql集群对于应用来说就相当于一台单独的mysql server,所以,不要纠结与应用该用什么数据库连接工具

JpaTransactionConfig类文件
这个配置类是重点.
在使用mycat时需要关闭spring-data-jpa默认的事务管理机制. 原因如下:mycat对于开启了事务的查询,插入等操作,都会走主库
spring-data-jpa默认的事务管理机制对查询操作执行的是`只读事务`,话说`只读事务`也是事务啊
鉴于以上两个原因.我们就得使用`enableDefaultTransactions = false`来关闭spring-data-jpa默认的事务管理机制.
好吧,既然我们关闭了默认的事务管理机制,我们就得使用`@Transactional`来开启声明式事务处理.哈哈,也就是说,我们需要用添加`@Transactional`注解的硬编码方式来实现事务管理.见`SalesmanService`

弄懂了这两个配置,剩下的就简单了.Salesman实体类
SalesmanRepository
SalesmanService

测试SalesmanServiceTest

运行testFindAll方法,查看mycat日志

注意看图中红框内的内容
好吧我们确定是走的从库.

从图中红框内的内容我们发现走的是主库.
总结
使用spring-data-jpa连接mycat的重点就在于关闭spring-data-jpa的默认事务管理机制并使用@Transactional注解来进行声明式事务管理.
注意这点就可以了.
代码
https://github.com/sunshineasbefore/mycat
支持请点赞,不喜请喷.
每天一点点,成长多一点.