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> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?