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);