Mybatis的动态创建删除表

Posted 量变决定质变

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis的动态创建删除表相关的知识,希望对你有一定的参考价值。

Mybatis中可以使用JSTL标签

动态删除表

Mapper

void deleteTable(@Param("tableName") String tableName);

Mapper.xml

<update id="deleteTable">
    DROP TABLE $tableName
</update>

动态创建表

Mapper

void createTable(@Param("newTableName") String newTableName, @Param("columns") List<Map<String, String>> columns);

Mapper.xml

<update id="createTable">
    CREATE TABLE $newTableName (
    "ID" VARCHAR2(64 BYTE) PRIMARY KEY NOT NULL,
    <foreach item="item" index="index" collection="columns" open="" separator="," close=",">
        "$item.code"
        <choose>
            <when test="item.type=='STRING'">
                VARCHAR2($item.length BYTE) NULL
            </when>
            <when test="item.type=='NUMBER'">
                NUMBER($item.length,$column.precision) NULL
            </when>
            <otherwise>
                TIMESTAMP($item.length) NULL
            </otherwise>
        </choose>
    </foreach>
    "CREATE_TIME" TIMESTAMP(6) NULL ,
    "MODIFY_TIME" TIMESTAMP(6) NULL
    )
</update>

或者

Mapper

void createTableColumn(@Param("newTableName") String newTableName, @Param("column") Map<String, String> column);

Mapper.xml

<update id="createTableColumn" parameterType="java.util.Map">
    CREATE TABLE $newTableName (
    "ID" VARCHAR2(64 BYTE) PRIMARY KEY NOT NULL,
    "CREATE_TIME" TIMESTAMP(6) NULL ,
    "MODIFY_TIME" TIMESTAMP(6) NULL ,
    "$column.code"
    <choose>
        <when test="column.type=='STRING'">
            VARCHAR2($column.length BYTE) NULL
        </when>
        <when test="column.type=='NUMBER'">
            NUMBER($column.length,$column.precision) NULL
        </when>
        <otherwise>
            TIMESTAMP($column.length) NULL
        </otherwise>
    </choose>
    )
</update>

以上是关于Mybatis的动态创建删除表的主要内容,如果未能解决你的问题,请参考以下文章

mybatis一次动态删除多个表数据

Java技术篇!硬核!阿里内部消化的Mybatis学习笔记

Spring Boot:实现MyBatis动态创建表

mybatis中怎么动态的获取表的字段

mybatis 动态添加表,查看表,添加数据

mybatis里面我要动态查询表的前n行数据:SELECT * FROM aa FETCH FIRST #NUM ROWS ONLY的#NUM 怎么写