本篇内容主要讲解“MyBatis如何实现简单的数据表分月存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatis如何实现简单的数据表分月存储”吧!
进行数据分月存储时,先要判断进入程序时是否已存在记录对应的月度表。
若为第一次进入需要根据对应的区分字符创建数据表
若已创建记录表,需要根据区分字符动态插入数据
这里以年度_月份为区分
LocalDate now = LocalDate.now(); String tableName = new StringBuilder().append(" us_record").append("_").append(now.getYear()).append("_").append(now.getMonthValue()).toString(); if(usDataRecordMapper.countTableNum(DATABASE, tableName) == 0){ // 若数据库中不存在,则新建对应的表 usDataRecordMapper.createTable(tableName); }
如何判断数据库中是否存在某张表
编写接口定义
// database:对应的数据库 table:对应的表名 int countTableNum(@Param("database") String database, @Param("table") String table);
编写sql 实现 (对应的数据库下有多少个该名字的数据表)
<select id="countTableNum" resultType="java.lang.Integer"> select count(*) from information_schema.TABLES t where t.TABLE_SCHEMA = #{database} and t.TABLE_NAME = #{table} </select>
编写接口定义
// 按月份为后缀创建对应的数据库表 int createTable(@Param("tableName") String tableName);
编写sql 实现
<update id="createTable"> CREATE TABLE us.${tableName} ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_type` int(4) NOT NULL COMMENT '来源 1:pc 3: 安卓 4: ios', `event_type` int(4) DEFAULT '1' COMMENT '事件类型 1:下载 2:视频时长', `business_type` int(4) DEFAULT NULL COMMENT '业务类型: 1:课程资料 2:复习资料 3:直播 4:录播 5:回放', `online_duration` int(4) DEFAULT NULL, `mapping_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联id', `user_id` varchar(150) NOT NULL DEFAULT '' COMMENT '用户id', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `unit` int(4) DEFAULT NULL COMMENT '单位 : 1/次数 2/分钟 3/秒', `learn_id` varchar(150) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户相关记录表'; </update>
编写接口定义
// 根据月份插入对应的用户相关记录表 UsDataRecord:对应的用户操作记录 int insertData(@Param("record") UsDataRecord usDataRecord, @Param("tableName") String tableName);
编写sql 实现 (根据自己的业务补充插入语句)
<insert id="insertData"> insert into us.${tableName} .......... </insert>
// Step1: 判断是否存在对应月度表 LocalDate now = LocalDate.now(); String tableName = new StringBuilder().append(TABLE_NAME).append("_").append(now.getYear()).append("_").append(now.getMonthValue()).toString(); if(usDataRecordMapper.countTableNum(DATABASE, tableName) == 0){ // 若数据库中不存在,则新建对应的表 // Step2: 创建对应数据的月度表 usDataRecordMapper.createTable(tableName); } // Step3: 往对应月度表插入数据 usDataRecordMapper.insertData(usDataRecord, tableName);
到此,相信大家对“MyBatis如何实现简单的数据表分月存储”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。