9月份参加软件架构师大会,京东老师提到了他们解决数据库水平切分用的mybatis拦截器来实现,目前所做的项目用的是mybatis,而恰好也需要这个功能,研究了下基本实现了拦截器根据配置自动切分数据表来进行访问。新老代码的改造很简单,加几个配置即可。
一、具体使用配置
1.1、拦截器配置
在mybatis-config.xml里面配置拦截器插件:
<plugins>
<plugin interceptor="com.wagcy.plugin.mybatis.TableSegInterceptor"></plugin>
</plugins>
如果是与spring集成,则配置如下
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="plugins">
<array>
<bean id="tableSegInterceptor" class="com.vrv.im.plugin.mybatis.TableSegInterceptor"/>
</array>
</property>
</bean>
1.2、切分配置
这里主要使用注解的方式,在mapper上去配置,如: