开发者

Mybatis实现动态建表代码实例

开发者 https://www.devze.com 2023-11-09 13:13 出处:网络 作者: yuhuofei2021
目录1. 前 言2. 动态建表实现Mapper 层Mapper.XML 层1. 前 言 在实际的开发中,有时候我们会遇到动态建表的情况,什么意思呢?
目录
  • 1. 前 言
  • 2. 动态建表实现
    • Mapper 层
    • Mapper.XML 层

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 cre编程客栈ateNewTable(@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.mybhttp://www.devze.comatisplus.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="cHMALFhbMQreateNewTable" parameterType="Stringandroid">
        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动态建表内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号