参考:
相关源码已上传至我的 github
欢迎转载,转载请注明出处,尊重作者劳动成果:https://www.cnblogs.com/li-mzx/p/9963312.html
前言
小弟才疏学浅,可能很多问题也没有考虑到,权当抛砖引玉,希望各位大神指点
项目背景:
希望做一个功能,能在sql操作数据库时,根据某个字段的值,或者说某种策略, 自动操作对应的表
比如 user表
user_oa,其中userid 为 oa000001、oa000002、oa123456
user_bz,其中userid 为 bz000002
user_sr, 其中userid 为 sr654321
根据业务人员所使用的系统,将user表细分为3个
分表规则为业务人员所注册的系统,比如上面的, sr oa bz
当dao层操作数据库时,系统自动根据userid 或指明分表名,自动去操作对应的表,即1个查询,对应多个数据库相同结构的表
实现思路
1、在需要分表的实体类中, 实现接口,提供分表所需要的分表策略,否则需要在dao的操作数据库方法中,加入表名参数
2、在需要分表的Dao接口中,添加注解,声明一个需要分表的操作,供拦截器拦截
3、定义拦截器,注册到mybatis中,在mybatis使用sql语句操作数据库之前,拦截添加了注解的dao方法,修改sql语句,将其中的表名,全部添加 从参数中或实体类中取得的表名后缀
代码环境
IntelliJ IDEA 2018.2.5 +jdk1.8.0 +Spring Boot 1.5.17 +MySql 5.7 + MyBatis 1.3.2 + Druid 1.1.3
代码
maven依赖:


UTF-8
UTF-8
1.8
1.1.3
2.7.0
com.alibaba
fastjson
1.2.45
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
org.springframework.boot
spring-boot-devtools
true
mysql
mysql-connector-java
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
com.alibaba
druid-spring-boot-starter
${druid.version}
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-swagger-ui
${swagger.version}
com.github.jsqlparser
jsqlparser
1.1
maven 依赖
application.yml



















