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>