Mybatis之分表设计与分表插入

现今数据量越来越大,表存储的数据越来越多,以至于查的时候非常慢,使工作效率明显的降低

所以对处理数据的保存就有比较常用的两个解决方案:分表,分区 

在这里就说对分表和和通过mybatis对数据的增删改查

分表:是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表

例如日志表:在数据库创建10张表XXXlog1,XXXlog2,XXXlog3,XXXlog4,XXXlog5........

然后通过操作的用户的ID去取模  判断该用户的操作日志要插入哪个表

#${tb_sub}传入的参数值是取模后的数字:1,2,3.....   另外id属于自增不做插入
<insert id="insert" parameterType="Object" keyProperty="id">
  insert into XXXlog${tb_sub}(user_id,status,send_userid,type,receive_yes,name,contents,create_time,addip,is_del)
  values ( #{userId},#{status},#{sendUserid},#{type},#{receiveYes},#{name},#{contents},now(),#{addip},#{isDel})
</insert>

同理改:

 <update id="updateByPrimaryKey" parameterType="Object" >
   update XXXlog${tb_sub} set user_id=#{userId},status=#{status},send_userid=#{sendUserid},type=#{type},receive_yes=#{receiveYes},
name=#{name},contents=#{contents},create_time=now(),addip=#{addip},is_del=#{isDel} where id=#{id}

</update>

同理查:

<!-- 根据id查询表 -->
<select id="selectByPrimaryKey"  resultMap="BaseResultMap" parameterType="Object">
    select <include refid="Base_Column_List" />  from XXXlog${tb_sub} where id = #{id} 
</select>

同理删:

<!-- 删除记录 -->
<delete id="deleteByPrimaryKey" parameterType="Object">
    delete from XXXlog${tb_sub} where id = #{id} 
</delete>

对于实体类与表之间的映射不做说明  详情可以查看:https://www.cnblogs.com/gjq1126-web/p/11363635.html

 controller层写法

#Spring注入
private IUserMessageReceiveService userMessageReceiveService;
#方法内容
Map<String, Object> userMessageReceive = new HashMap<String, Object>(); Long tableName = Long.valueOf(userId) % 10; userMessageReceive.put("tb_sub", "_" + tableName);
......
userMessageReceiveService.insert(userMessageReceive);
原文地址:https://www.cnblogs.com/gjq1126-web/p/11376937.html