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动态建表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java String初始化String域例题解析

    Java String初始化String域例题解析

    这篇文章主要介绍了Java String初始化String域例题解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Maven是什么?Maven的概念+作用+仓库的介绍+常用命令的详解

    Maven是什么?Maven的概念+作用+仓库的介绍+常用命令的详解

    Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑.,本文给大家介绍Maven的概念+作用+仓库的介绍+常用命令,感兴趣的的朋友跟随小编一起看看吧
    2020-09-09
  • SpringBoot下如何实现支付宝接口的使用

    SpringBoot下如何实现支付宝接口的使用

    这篇文章主要介绍了SpringBoot下如何实现支付宝接口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • mybatis关系映射之一对多和多对一

    mybatis关系映射之一对多和多对一

    今天小编就为大家分享一篇关于mybatis关系映射之一对多和多对一,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • SpringBoot集成validation校验参数遇到的坑

    SpringBoot集成validation校验参数遇到的坑

    这篇文章主要介绍了SpringBoot集成validation校验参数遇到的坑,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java中如何检查数组是否包含某整数

    Java中如何检查数组是否包含某整数

    这篇文章主要介绍了在 Java 中检查数组是否包含某整数,在本文中,我们使用了几个内置的方法,如anyMatch()、contains()、binarySearch()等,我们将在给定的数组中找到一个值,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Spring Cloud Alibaba之Sentinel实现熔断限流功能

    Spring Cloud Alibaba之Sentinel实现熔断限流功能

    这篇文章主要介绍了Spring Cloud Alibaba之Sentinel,这里使用阿里的sentinel来实现熔断限流功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • mybatis如何设置useGeneratedKeys=true

    mybatis如何设置useGeneratedKeys=true

    这篇文章主要介绍了mybatis如何设置useGeneratedKeys=true,具有很好的参考价值,希望对大家有所帮助。
    2022-01-01
  • Java基础详解之集合框架工具Collections

    Java基础详解之集合框架工具Collections

    这篇文章主要介绍了Java基础详解之集合框架工具Collections,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • MyBatis数据脱敏的实现方案介绍

    MyBatis数据脱敏的实现方案介绍

    在我们数据库中有些时候会保存一些用户的敏感信息,比如:手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的
    2022-08-08

最新评论