Mybatis实现动态建表代码实例

 更新时间:2023年10月17日 10:43:58   作者:yuhuofei2021  
这篇文章主要介绍了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动态建表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 带你走进Maven的大门-最全Maven配置及集成idea工具总结

    带你走进Maven的大门-最全Maven配置及集成idea工具总结

    Maven项目对象模型(POM),是一个项目管理工具可以通过一小段描述信息来管理项目的构建,报告和文档的软件.那我们想要在IDEA中使用Maven得进行一些配置,接下来我们具体看一下是如何配置使用的,需要的朋友可以参考下
    2021-06-06
  • JPA在不写sql的情况下如何实现模糊查询

    JPA在不写sql的情况下如何实现模糊查询

    文章介绍了在项目中实现模糊查询的几种方法,包括使用JPA的API、JPQL、QueryByExample和@Query注解,通过实现Specification接口和定义接口继承JpaRepository,可以方便地进行单字段和多字段的模糊查询,文章还提到了BINARY函数的使用以及查询结果的返回
    2024-11-11
  • 基于maven的ssm框架整合的示例代码

    基于maven的ssm框架整合的示例代码

    本篇文章主要介绍了基于maven的ssm框架整合的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 手工体验smtp和pop3协议 邮件实现详解(二)

    手工体验smtp和pop3协议 邮件实现详解(二)

    POP3/IMAP协议定义了邮件客户端软件和POP3邮件服务器的通信规则,这篇文章我们就来手工体验SMTP和POP3协议的奥秘,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 使用maven-assembly-plugin如何打包多模块项目

    使用maven-assembly-plugin如何打包多模块项目

    这篇文章主要介绍了使用maven-assembly-plugin如何打包多模块项目,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java设计模式之原型模式的示例详解

    Java设计模式之原型模式的示例详解

    原型模式(Prototype Pattern)指使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。本文将通过案例详细讲解一下原型模式,感兴趣的可以了解一下
    2022-02-02
  • java非公平锁知识点实例详解

    java非公平锁知识点实例详解

    在本篇文章里小编给大家整理了一篇关于java非公平锁知识点实例详解,有兴趣的朋友们可以学习参考下。
    2021-10-10
  • gradle中的增量构建浅析

    gradle中的增量构建浅析

    这篇文章主要介绍了gradle中的增量构建,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 浅析final,finally,finalize 的区别

    浅析final,finally,finalize 的区别

    以下是对final,finally,finalize的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • 非maven项目快速转换为maven项目的方法步骤

    非maven项目快速转换为maven项目的方法步骤

    时候我们导入的项目并不是有maven来管理依赖的,而是要手动添加jar包,比较麻烦,本文主要介绍了非maven项目快速转换为maven项目的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论