Mysql + Mybatis动态建表

service层业务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.zx.common.service.impl;
 
import com.zx.common.entity.SysUser;
import com.zx.common.mapper.SysUserMapper;
import com.zx.common.service.SysUserService;
import com.zx.common.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.UUID;
 
@Service("sysUserService")
public class SysUserServiceImpl implements SysUserService {
 
    @Autowired
    private SysUserMapper sysUserMapper;
 
    @Override
    public List<SysUser> selectAllUser() {
        return sysUserMapper.selectAllUser();
    }
 
    @Transactional(rollbackFor = {Exception.class})
    @Override
    public void updateUserInfoTimer() {
        //根据上一天的日期将sys_user重命名为sys_user_上一天日期
 
        String beforeDateStr = DateUtil.getBeforeDateString();
        String rename = "sys_user_" + beforeDateStr + UUID.randomUUID().toString().substring(0,16);
        sysUserMapper.renameTable(rename.replace("-",""));
        //新建sys_user表
        sysUserMapper.createTable();
    }
}

  mapper层接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.zx.common.mapper;
 
import com.zx.common.entity.SysUser;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
 
public interface SysUserMapper {
 
    List<SysUser> selectAllUser();
 
    void renameTable(@Param("tableName") String tableName);
 
    void createTable();
}

  mapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zx.common.mapper.SysUserMapper" >
  <resultMap id="BaseResultMap" type="com.zx.common.entity.SysUser" >
    <id column="ID" property="id" jdbcType="INTEGER" />
    <result column="USERNAME" property="username" jdbcType="VARCHAR" />
    <result column="PASSWORD" property="password" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    ID, USERNAME, PASSWORD
  </sql>
  <update id="renameTable" parameterType="java.lang.String">
      rename table sys_user to ${tableName };
  </update>
  <update id="createTable">
    CREATE TABLE sys_user (
        ID INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
        USERNAME VARCHAR(64) NOT NULL DEFAULT '',
        PASSWORD VARCHAR(32) NOT NULL DEFAULT '',
        PRIMARY KEY(ID),
        KEY I_SYS_USER_USERNAME (USERNAME)
    )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT='用户表';
  </update>
 
</mapper>

  

posted @   金鱼的第七秒记忆  阅读(660)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示