主要解决思路:
使用mybatis拦截器,在预编译sql的时候根据参数获取最终要操作的表名
添加自定义拦截器
<!-- mybatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dynamicDataSource"/>
<property name="mapperLocations" value="classpath*:config/mappers/**/*Mapper.xml"/>
<!-- mybatis拦截器配置 -->
<property name="plugins">
<array>
<bean class="net.wecash.shard.ShardInterceptor"/>
</array>
</property>
</bean>
拦截器的具体实现
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, I