应用场景: 服务器日志需要按月划分,所以想到采用动态创建数据表,下面分别写一下Mybatis框架的,Oracle数据 和 Mysql数据库动态建表的语句:
1 : Mybatis + Mysql 动态建表
<update id="create_Table" parameterClass="java.util.HashMap">
<![CDATA[
CREATE TABLE $tableName$ (
`T_ID` bigint(19) NOT NULL AUTO_INCREMENT,
`T_TYPE` varchar(4) DEFAULT NULL,
`T_TRADE_ID` varchar(50) DEFAULT NULL,
`T_TYPE` varchar(20) DEFAULT NULL,
`F_TYPE` varchar(4) DEFAULT NULL,
`TRE_REQUEST_CONTENT` text,
`TDE_RESULT_CONTENT` text,
`CRD_DATE` datetime DEFAULT NULL,
`IED_DATE` datetime DEFAULT NULL,
`TED_USER` varchar(45) DEFAULT NULL,
`FIED_USER` varchar(45) DEFAULT NULL,
`ISETE` tinyint(1) DEFAULT NULL,
`AN` varchar(4) DEFAULT NULL,
`STUS` varchar(4) DEFAULT NULL,
`SE_IP` varchar(100) DEFAULT NULL,
PRIMARY KEY (`TR_ID`),
INDEX IDX_ETT_CREATED_DATE_$currentDate$(CREATED_DATE),
INDEX IDX_ETT_THIRD_TRADE_ID_$currentDate$(THIRD_TRADE_ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
]]>
</update>
2:Mybatis + Oracle 动态建表:
<update id="createSeq" parameterType="java.util.HashMap">
create sequence ${tableSeq} minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 20
</update>
<update id="createIndexDate" parameterType="java.util.HashMap">
create index IDX_CREATED_DATE_${currentDate} on ${tableName}(CREATED_DATE)
</update>
<update id="createIndexThird" parameterType="java.util.HashMap">
create index IDX_THIRD_TRADE_ID_${currentDate} on ${tableName}(THIRD_TRADE_ID)
</update>
==========================
<update id="createTable" parameterType="java.util.HashMap">
CREATE TABLE ${tableName} (
TRADE_ID NUMBER(19,0) NOT NULL,
THIRD_TYPE VARCHAR2(4) ,
THIRD_TRADE_ID VARCHAR2(50) ,
TRADE_TYPE VARCHAR2(20) ,
FROM_TYPE VARCHAR2(4) ,
TRADE_REQUEST_CONTENT CLOB,
TRADE_RESULT_CONTENT CLOB,
CREATED_DATE DATE ,
CREATED_TIME VARCHAR2(24),
MODIFIED_DATE DATE,
MODIFIED_TIME VARCHAR2(24),
CREATED_USER VARCHAR2(45),
MODIFIED_USER VARCHAR2(45),
IS_DELETE NUMBER(1,0),
ASYN VARCHAR2(4),
STATUS VARCHAR2(4),
SERVER_IP VARCHAR2(100),
constraint PK_YBT_THIRD_TRADE_${currentDate} primary key (TRADE_ID)
)
</update>