一、前言
小编最近一直在研究关于分库分表的东西,前几天docker安装了mycat实现了分库分表,但是都在说mycat的bug很多。很多人还是倾向于shardingsphere
,其实他是一个全家桶,有JDBC、Proxy 和 Sidecar
组成,小编今天以最简单的JDBC
来简单整合一下! 现在最新版已经是5.1.1
,经过一天的研究用于解决了所有问题,完成了单库分表!!
想了解4.0.0版本的可以看一下小编刚刚写的:SpringBoot+Mybatis-Plus整合Sharding-JDBC4.0.0实现单库分表 如果想看mycat的可以看一下小编之前写的文章哈:Docker安装Mycat和Mysql进行水平分库分表实战
二、踩过的坑
1. 数据源问题
不要使用druid-spring-boot-starter
这个依赖,启动会有问题
<dependency>-->
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
/dependency>
报错信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in file
[D:\jiawayun\demo\target\classes\com\example\demo\mapper\UserMapper.class]:
Invocation of init method failed; nested exception is
java.lang.IllegalArgumentException: Property 'sqlSessionFactory'
or 'sqlSessionTemplate' are required
==解决方案:==
使用单独的druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
建议使用==默认的数据源==,sharding-jdbc也是使用的默认的数据源,小编使用的自带的,忘记druid
后面会不会有问题了!!
type: com.zaxxer.hikari.HikariDataSource
2. Insert 语句不支持分表路由到多个数据节点
报错信息: Insert statement does not support sharding table routing to multiple data nodes.
解决方案: 看小编文章: