1.MyBatis通过接口调用自定义创建数据表
实例代码:
<update id="createCustomTable" parameterType="com.rabbitmq.mq.entity.CreateTableAndTabbleName">
CREATE TABLE IF NOT EXISTS ${tableName} (
`id` int NOT NULL AUTO_INCREMENT COMMENT '编号',
<foreach collection="customTables" item="item" separator="">
<if test="item.choose == true">
${item.createTableFiledName} ${item.fieldType}
<choose>
<when test="item.isNotNull != null and item.isNotNull !=''">
NOT NULL
</when>
</choose>
DEFAULT
<choose>
<when test="item.defaultValue != null and item.defaultValue !=''">
${item.defaultValue}
</when>
<otherwise>
NULL
</otherwise>
</choose>
COMMENT
<choose>
<when test="item.comment != null and item.comment !=''">
'${item.comment}'
</when>
<otherwise>
'${item.createTableFiledName}'
</otherwise>
</choose>
,
</if>
</foreach>
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
</update>
2.接口调用参数实例:
URL:localhost:8080/createCustomTable
requestMethods: Post
body:
{
"tableName":"custom_table_1",
"customTables":[{
"createTableFiledName":"creater",
"fieldType":"varchar(255)",
"comment":"创建者",
"choose":true
},{
"createTableFiledName":"create_time",
"fieldType":"timestamp",
"defaultValue":"CURRENT_TIMESTAMP",
"isNotNull":true,
"comment":"创建时间",
"choose":true
},{
"createTableFiledName":"updater",
"fieldType":"varchar(255)",
"comment":"更新者",
"choose":true
},{
"createTableFiledName":"update_time",
"fieldType":"timestamp",
"defaultValue":"CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP",
"isNotNull":true,
"comment":"更新时间",
"choose":true
},{
"createTableFiledName":"is_delete",
"fieldType":"tinyint(1)",
"defaultValue":0,
"comment":"是否删除",
"choose":true
},{
"createTableFiledName":"ip",
"fieldType":"varchar(64)",
"comment":"IP地址",
"choose":false
},{
"createTableFiledName":"operation",
"fieldType":"varchar(50)",
"comment":"用户操作",
"choose":false
}]
}
3.实体类对于参数说明
CreateTableAndTabbleName 和 CustomTable
`1`
public class CreateTableAndTabbleName {
private String tableName;
private List<CustomTable> customTables;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public List<CustomTable> getCustomTables() {
return customTables;
}
public void setCustomTables(List<CustomTable> customTables) {
this.customTables = customTables;
}
}
`2`
public class CustomTable {
/*外部数据字段*/
private String externalDataField;
/*是否为空*/
private boolean isNotNull;
/*默认值*/
private String defaultValue;
/*评论*/
private String comment;
/*建表数据字段*/
private String createTableFiledName;
/*字段类型*/
private String fieldType;
/*字段长度*/
private int lengthLimit;
/*选择,choose如果为true说明是可添加*/
private boolean choose;
public String getExternalDataField() {
return externalDataField;
}
public void setExternalDataField(String externalDataField) {
this.externalDataField = externalDataField;
}
public boolean isNotNull() {
return isNotNull;
}
public void setNotNull(boolean notNull) {
isNotNull = notNull;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getCreateTableFiledName() {
return createTableFiledName;
}
public void setCreateTableFiledName(String createTableFiledName) {
this.createTableFiledName = createTableFiledName;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public int getLengthLimit() {
return lengthLimit;
}
public void setLengthLimit(int lengthLimit) {
this.lengthLimit = lengthLimit;
}
public boolean isChoose() {
return choose;
}
public void setChoose(boolean choose) {
this.choose = choose;
}
}
//可添加 外键等操作
//添加外键 alter table 【tableName】 add constraint 【FK】 foreign key(【filed】) REFERENCES 【REFERENCEStable】(【REFERENCESfield】)
//查看表结构desc custom_table_1;
//查看所有表 show tables;