分库分表的目的主要是分摊数据库的压力,同时会涉及到主从数据库的切换、读写库和只读库的切换。
亦即数据库的分片、备份、读写分离。
一、分库
1、shardbatis
https://code.google.com/archive/p/shardbatis/wikis/UserGuide2x.wiki
2、cobarclient
二、分表
1、通过java应用程序根据规则计算所属表,传入mybatis sqlmap进行查询
<select id="test" parameterType="map" resultType="map">
select * from $tbName where id = #{id}
</select>
2、直接通过mybatis sqlmap计算并查询
<select id="test" parameterType="map" resultType="map">
select * from prefix_${id%10} where id = #{id}
</select>
或者动态sql片段提取出来
<sql id="getShardTable">
prefix_${id%10}
</sql>
<select id="test" parameterType="map" resultType="map">
select * from <include refid="getShardTable"/> where id = #{id}
</select>