首页 > 其他分享 >动态创建表

动态创建表

时间:2024-08-18 23:16:35浏览次数:7  
标签:comment createItemTable default tableName 动态创建 null

部分场景需要动态创建表,例如根据用户输入的表名动态创建。动态创建表可以使用xml方式来实现,具体步骤如下:

1、service层:中调用mapper里的createTable方法

     itemMapper.createItemTable(tableName, VARCHAR_256);

2、DAO层:mapper中写具体的创建方法 createItemTable

@Mapper
public interface ItemMapper {
    void createItemTable(String tableName,String type);
}
// 只有一个参数时,写成:void createItemTable( @Param("tableName")String tableName );

3、xml文件中编写建表语句

  • namespace:ItemMapper的路径
  • update id:createItemTable方法名
  • ${ }:用来使用传入的参数(注意不是#{})
<?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.datamanager.dal.mapper.ItemMapper">
    <!-- 创建表SQL,tableName为表名,type为original_data字段类型-->
    <update id="createItemTable">
        create table ${tableName}
        (
        id          int unsigned not null auto_increment comment '自增主键ID',
        subset_id      int not null  default 0 comment '子集ID',
        name     varchar(64) not null default '' comment '数据名',
        original_data  ${type} not null default '' comment '原始数据',
        meta         varchar(1024) not null  default '' comment '元数据',
        status       tinyint not null  default 1 comment '状态',
        creator      varchar(32) not null  default '' comment '创建人',
        operator      varchar(32) not null  default '' comment '最后修改人',
        create_time datetime    not null default current_timestamp comment '创建时间',
        modify_time datetime   not null default current_timestamp on update current_timestamp comment '更新时间',
        primary key (`id`),
        unique key `uk_name`(`name`)
        )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 comment '源数据表';
    </update>
</mapper>

参考资料

springboot+mybatis动态创建数据表和删除数据库表(流程)

MyBatis 动态创建表(详细一些) 

标签:comment,createItemTable,default,tableName,动态创建,null
From: https://www.cnblogs.com/zhegemaw/p/18366345

相关文章

  • cxgrid使用三问1cxgrid 如何动态创建列2cxGrid 通过字段名取得列3cxGrid动态创建的列
    //1cxgrid动态创建列procedureTFrmRuleEdit.CreateCols;varColumn:TcxGridDBColumn;begincdsPowerPrj.First;whilenotcdsPowerPrj.EofdobeginColumn:=viewPower.CreateColumn;Column.Caption:=cdsPowerPrj.FieldByName('description').Text;Column.D......
  • 如何在Python中使用装饰器动态创建类方法?
    我正在开发一个Python项目,我需要在运行时动态地为类创建方法。我想使用装饰器根据一些外部配置将这些方法添加到类中。要求是:装饰器应该从外部配置(例如字典)读取方法定义。装饰器应该动态地将这些方法添加到类中。每个生成的方法都应具有配置中指定的自己唯一的实现。以......
  • Fragment的动态创建
    Fragment的动态创建动态创建不同于静态创建,不需要写固定的xml文件,但是依然要有一个xml文件来当容器。1.我们需要使用<androidx.fragment.app.FragmentContainerView/><?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/re......
  • python watchdog检测到文件产生,动态创建进程,不指定进程数去处理,处理过程中需要写文件,
    如果希望在检测到文件时动态创建进程而不预先指定进程数,并确保写文件时不发生冲突,可以使用队列和锁的机制。以下是一个改进的方案:pythonfrommultiprocessingimportProcess,Queue,Lockfromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemE......
  • MFC中动态创建多个按钮并实现其消息响应
    我们需要根据程序输入或运行时信息在界面上动态生成一个或多个按钮,并分别添加消息响应,实现这一目标包括如下几步:1.在类中声明按钮变量指针CButtonbtnArray[n];2.在类中声明并定义按钮控件的ID, buttonID=10000;3.想要创建按钮的数量staticconstintn=6;主要这几行:af......
  • C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证
    C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证 参考了:https://www.cnblogs.com/-dawn/p/8598566.html GetLog4netInstance:usinglog4net;usinglog4net.Appender;usinglog4net.Config;usinglog4net.Core;usinglog4net.Filter;usinglog4net.L......
  • FreeRTOS基础(三):动态创建任务
       上一篇博客,我们讲解了FreeRTOS中,我们讲解了创建任务和删除任务的API函数,那么这一讲,我们从实战出发,规范我们在FreeRTOS下的编码风格,掌握动态创建任务的编码风格,达到实战应用!目录一、任务函数二、动态创建任务的基本步骤2.1使能FreeRTOS的API函数2.2 定义动态创......
  • cesium实现动态创建广告牌
    import{globalColorList,globalTextColorList}from"../js/positionTools.js";/***广告牌设备图标函数类*/exportdefaultclassDeviceMarker{constructor(arg){}/***初始化广告牌*@param{*}text文字*@param{*}iconType图表类型*......
  • webapi动态创建后台任务(使用排队的后台任务)
    很多时候我们都会使用后台定时任务,但有些任务不需要定时执行,只需要请求到来时执行一次,比如请求服务器到某个地方同步数据,但请求不需要等数据同步完成再响应。这时候就可以使用排队的后台任务。基本原理是用一个队列保存任务委托,然后用一个后台定时任务依次执行队列中的委托。MSD......
  • .NET字符串内存管理:常量字符串、动态创建和字符串池的巧妙结合
     在.NET中,字符串是不可变的,这意味着一旦创建,字符串的内容就不能被修改。字符串在内存中以不同的方式存储,具体取决于它是常量字符串还是动态创建的字符串。常量字符串常量字符串在编译时就被解析,并在程序的元数据(Metadata)中存储。多个相同的字符串常量可能会共享同一块内存......