Mybatis实现动态建表代码实例
而使用 Mybatis 的动态 SQL,就能很好地为我们解决这个问题,需要的朋友可以参考下
1. 前 言
在实际的开发中,有时候我们会遇到动态建表的情况,什么意思呢?
解释一下,就是指根据传入的表名,动态地创建数据库表,以供后面的业务场景使用。
而使用 Mybatis 的动态 SQL,就能很好地为我们解决这个问题。
例如,现在要动态地创建一个班级表,那么正常的数据库语句,可能是这样的:
CREATE TABLE `2201011` ( `class_id` int(8) NOT NULL COMMENT' 班级id', `class_name` varchar(100) NOT NULL COMMENT '班级名称', `student_count` int(10) NOT NULL COMMENT '班级学生人数', `teacher_count` int(8) NOT NULL COMMENT '班级配备教师人数', PRIMARY KEY (`class_id`) ) ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
表名就是班级名,后面这个班级名是动态传参的,而每个班级都是这样的表结构字段,那接下来,我们就用 Mybatis 的动态 SQL 实现一下。
2. 动态建表实现
这里省略建立项目的过程,只写一个动态建表的实现。
Mapper 层
package springboot.mybatisplus.student.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import springboot.mybatisplus.student.entity.Student; /** * <p> * Mapper 接口 * </p> * * @author yuhuofei * @since 2022-04-05 */ public interface StudentMapper extends BaseMapper<Student> { /** * 动态建表 * * @param tableName * @return int */ int createNewTable(@Param("tableName") String tableName); }
Mapper.xml 层
<?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="springboot.mybatisplus.student.mapper.StudentMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="springboot.mybatisplus.student.entity.Student"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="tid" property="tid"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, name, tid </sql> <update id="createNewTable" parameterType="String"> CREATE TABLE ${tableName} ( class_id int(8) NOT NULL , class_name varchar(100) NOT NULL , student_count int(10) NOT NULL , teacher_count int(8) NOT NULL , PRIMARY KEY (class_id) )ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_bin </update> </mapper>
到此这篇关于Mybatis实现动态建表代码实例的文章就介绍到这了,更多相关Mybatis动态建表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot下使用shiro自定义filter的个人经验分享
这篇文章主要介绍了springboot下使用shiro自定义filter的个人经验,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09Java中的线程同步与ThreadLocal无锁化线程封闭实现
这篇文章主要介绍了Java中的线程同步与ThreadLocal无锁化线程封闭实现,Synchronized关键字与ThreadLocal变量的使用是Java中线程控制的基础,需要的朋友可以参考下2016-03-03Springboot项目打包如何将依赖的jar包输出到指定目录
公司要对springboot项目依赖的jar包进行升级,但是遇到一个问题,项目打包之后,没办法看到他里面依赖的jar包,版本到底是不是升上去了,没办法看到,下面通过本文给大家分享Springboot项目打包如何将依赖的jar包输出到指定目录,感兴趣的朋友一起看看吧2024-05-05
最新评论