Commit ed9df112 authored by 赵啸非's avatar 赵啸非

修改数据库字段映射关键字转义问题

parent 5e3804c4
......@@ -14,6 +14,8 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import static com.mortals.xhx.common.key.GenConstants.KEYWORDS_SET;
/**
* Description:GentableColumn
* date: 2021-9-28 10:10:15
......@@ -75,6 +77,14 @@ public class GentableColumnEntityExt extends BaseEntityLong {
return returnStr;
}
public static String isKeyWord(String columnName) {
if(KEYWORDS_SET.contains(columnName)){
return "`"+columnName+'`';
}
return columnName;
}
public static String randomNumber() {
Faker faker = new Faker(Locale.CHINESE);
......
......@@ -698,6 +698,10 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
Long[] colIds = gentableColumnService.find(new GentableColumnQuery().tableIdList(Arrays.asList(ids))).stream().map(GentableColumnEntity::getId).toArray(Long[]::new);
gentableColumnService.remove(colIds, context);
super.removeAfter(ids, context, result);
}
......
package com.mortals.xhx.common.key;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* 代码生成通用常量
*
......@@ -73,19 +77,19 @@ public class GenConstants {
/**
* 页面不需要编辑字段
*/
public static final String[] COLUMNNAME_NOT_EDIT = {"id", "createUser","createUserId", "createTime", "delFlag","updateUser","updateUserId","updateTime",
public static final String[] COLUMNNAME_NOT_EDIT = {"id", "createUser", "createUserId", "createTime", "delFlag", "updateUser", "updateUserId", "updateTime",
"updateTime"};
/**
* 页面不需要显示的列表字段
*/
public static final String[] COLUMNNAME_NOT_LIST = {"id", "createUser","createUserId", "createTime", "delFlag", "updateUser","updateUserId",
public static final String[] COLUMNNAME_NOT_LIST = {"id", "createUser", "createUserId", "createTime", "delFlag", "updateUser", "updateUserId",
"updateTime"};
/**
* 页面不需要查询字段
*/
public static final String[] COLUMNNAME_NOT_QUERY = {"id", "createUser","createUserId", "createTime", "delFlag", "updateUser","updateUserId",
public static final String[] COLUMNNAME_NOT_QUERY = {"id", "createUser", "createUserId", "createTime", "delFlag", "updateUser", "updateUserId",
"updateTime", "remark"};
/**
......@@ -192,4 +196,9 @@ public class GenConstants {
* 不需要
*/
public static final Integer NOREQUIRE = 0;
public static final String[] MYSQL_KEYWORDS = {"add", "all", "alter", "analyze", "and", "as", "asc", "asensitive", "before", "between", "bigint", "binary", "blob", "both", "by", "call", "cascade", "case", "change", "char", "character", "check", "collate", "column", "condition", "connection", "constraint", "continue", "convert", "create", "cross", "current_date", "current_time", "current_timestamp", "current_user", "cursor", "database", "databases", "day_hour", "day_microsecond", "day_minute", "day_second", "dec", "decimal", "declare", "default", "delayed", "delete", "desc", "describe", "deterministic", "distinct", "distinctrow", "div", "double", "drop", "dual", "each", "else", "elseif", "enclosed", "escaped", "exists", "exit", "explain", "false", "fetch", "float", "float4", "float8", "for", "force", "foreign", "from", "fulltext", "goto", "grant", "group", "having", "high_priority", "hour_microsecond", "hour_minute", "hour_second", "if", "ignore", "in", "index", "infile", "inner", "inout", "insensitive", "insert", "int", "int1", "int2", "int3", "int4", "int8", "integer", "interval", "into", "is", "iterate", "join", "key", "keys", "kill", "label", "leading", "leave", "left", "like", "limit", "linear", "lines", "load", "localtime", "localtimestamp", "lock", "long", "longblob", "longtext", "loop", "low_priority", "match", "mediumblob", "mediumint", "mediumtext", "middleint", "minute_microsecond", "minute_second", "mod", "modifies", "natural", "not", "no_write_to_binlog", "null", "numeric", "on", "optimize", "option", "optionally", "or", "order", "out", "outer", "outfile", "precision", "primary", "procedure", "purge", "raid0", "range", "read", "reads", "real", "references", "regexp", "release", "rename", "repeat", "replace", "require", "restrict", "return", "revoke", "right", "rlike", "schema", "schemas", "second_microsecond", "select", "sensitive", "separator", "set", "show", "smallint", "spatial", "specific", "sql", "sqlexception", "sqlstate", "sqlwarning", "sql_big_result", "sql_calc_found_rows", "sql_small_result", "ssl", "starting", "straight_join", "table", "terminated", "then", "tinyblob", "tinyint", "tinytext", "to", "trailing", "trigger", "true", "undo", "union", "unique", "unlock", "unsigned", "update", "usage", "use", "using", "utc_date", "utc_time", "utc_timestamp", "values", "varbinary", "varchar", "varcharacter", "varying", "when", "where", "while", "with", "write", "x509", "xor", "year_month", "zerofill"};
public static final Set<String> KEYWORDS_SET = new HashSet<>(Arrays.asList(MYSQL_KEYWORDS));
}
......@@ -294,7 +294,7 @@
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??&& column.defaultValue!="">
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#else>
<#assign Default>null</#assign>
</#if>
......
......@@ -271,7 +271,7 @@
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??&& column.defaultValue!="">
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#else>
<#assign Default>null</#assign>
</#if>
......
......@@ -220,7 +220,7 @@
<#elseif column.javaType=="String" && column.defaultValue??>
<#assign Default>"${column.defaultValue}"</#assign>
<#elseif column.javaType=="BigDecimal" && column.defaultValue??&& column.defaultValue!="">
<#assign Default>BigDecimal.valueOf(${column.defaultValue})</#assign>
<#assign Default>${column.defaultValue}</#assign>
<#else>
<#assign Default>null</#assign>
</#if>
......
......@@ -15,9 +15,9 @@
<resultMap type="${ClassName}Entity" id="${ClassName}Entity-Map">
<#list columns as column>
<#if column.isPrimaryKey==1>
<id property="${column.javaField}" column="${column.columnName}" />
<id property="${column.javaField}" column="${column.isKeyWord(column.columnName)}" />
<#else >
<result property="${column.javaField}" column="${column.columnName}" />
<result property="${column.javaField}" column="${column.isKeyWord(column.columnName)}" />
</#if>
</#list>
${SubArray}
......@@ -25,7 +25,7 @@
<#if table.tplCategory=="sub" ||table.tplCategory=="subone">
<resultMap type="${subClassName}Entity" id="${subClassName}Entity-Map">
<#list subTable.columns as column>
<result property="${column.javaField}" column="${column.columnName}" />
<result property="${column.javaField}" column="${column.isKeyWord(column.columnName)}" />
</#list>
</resultMap>
</#if>
......@@ -78,7 +78,7 @@
<#else>
<#assign Default></#assign>
</#if>
`${column.columnName}` ${column.columnType} ${Required} ${autoInc} COMMENT '${column.columnComment}',
${column.isKeyWord(column.columnName)} ${column.columnType} ${Required} ${autoInc} COMMENT '${column.columnComment}',
</#list>
PRIMARY KEY (`${pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${functionName}';
......@@ -90,7 +90,7 @@
<trim suffixOverrides="," suffix="">
<#list columns as column>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('${column.javaField}') or colPickMode == 1 and data.containsKey('${column.javaField}')))">
a.${column.columnName},
a.${column.isKeyWord(column.columnName)},
</if>
</#list>
</trim>
......@@ -99,14 +99,14 @@
<!-- 子表所有列 -->
<sql id="_columns_sub">
<trim suffixOverrides="," suffix="">
<#list subColumns as column>b.${column.columnName},</#list>
<#list subColumns as column>b.${column.isKeyWord(column.columnName)},</#list>
</trim>
</sql>
</#if>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="${ClassName}Entity" <#if pkColumn.isIncrement?? && pkColumn.isIncrement==1> useGeneratedKeys="true" keyProperty="${pkColumn.javaField}"</#if>>
insert into ${TempTable}
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.columnName}<#sep>,</#if></#list>)
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.isKeyWord(column.columnName)}<#sep>,</#if></#list>)
VALUES
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1><#noparse>#</#noparse>{${column.javaField}}<#sep>,</#if></#list>)
</insert>
......@@ -114,7 +114,7 @@
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into ${TempTable}
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.columnName}<#sep>,</#if></#list>)
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1>${column.isKeyWord(column.columnName)}<#sep>,</#if></#list>)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(<#list columns as column><#if column.columnName != pkColumn.columnName || pkColumn.isIncrement!=1><#noparse>#</#noparse>{item.${column.javaField}}<#sep>,</#if></#list>)
......@@ -131,11 +131,11 @@
<#-- 非主键更新 -->
<#if column.columnName != pkColumn.columnName>
<if test="(colPickMode==0 and data.containsKey('${column.javaField}')) or (colPickMode==1 and !data.containsKey('${column.javaField}'))">
a.${column.columnName}=<#noparse>#</#noparse>{data.${column.javaField}},
a.${column.isKeyWord(column.columnName)}=<#noparse>#</#noparse>{data.${column.javaField}},
</if>
<#if column.javaType == "Integer"||column.javaType == "Long"||column.javaType == "BigDecimal">
<if test="(colPickMode==0 and data.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !data.containsKey('${column.javaField}Increment'))">
a.${column.columnName}=ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{data.${column.javaField}Increment},
a.${column.isKeyWord(column.columnName)}=ifnull(a.${column.isKeyWord(column.columnName)},0) + <#noparse>#</#noparse>{data.${column.javaField}Increment},
</if>
</#if>
</#if>
......@@ -155,7 +155,7 @@
<#list columns as column>
<#if column.columnName != pkColumn.columnName>
<#if column.javaType == "String"||column.javaType == "Date">
<trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<trim prefix="${column.isKeyWord(column.columnName)}=(case" suffix="ELSE ${column.isKeyWord(column.columnName)} end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
......@@ -164,14 +164,14 @@
</trim>
</#if>
<#if column.javaType == "Integer"||column.javaType == "Long"||column.javaType == "BigDecimal">
<trim prefix="${column.columnName}=(case" suffix="ELSE ${column.columnName} end),">
<trim prefix="${column.isKeyWord(column.columnName)}=(case" suffix="ELSE ${column.isKeyWord(column.columnName)} end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('${column.javaField}')) or (colPickMode==1 and !item.containsKey('${column.javaField}'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then <#noparse>#</#noparse>{item.${column.javaField}}
</when>
<when test="(colPickMode==0 and item.containsKey('${column.javaField}Increment')) or (colPickMode==1 and !item.containsKey('${column.javaField}Increment'))">
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then ifnull(a.${column.columnName},0) + <#noparse>#</#noparse>{item.${column.javaField}Increment}
when a.${pkColumn.columnName}=<#noparse>#</#noparse>{item.${pkColumn.javaField}} then ifnull(a.${column.isKeyWord(column.columnName)},0) + <#noparse>#</#noparse>{item.${column.javaField}Increment}
</when>
</choose>
</foreach>
......@@ -322,49 +322,49 @@
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null ">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} = <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} = <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if>
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}List') and conditionParamRef.${column.javaField}List.size() > 0">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} in
<foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#{item}</#noparse>
</foreach>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}NotList') and conditionParamRef.${column.javaField}NotList.size() > 0">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} not in
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} not in
<foreach collection="conditionParamRef.${column.javaField}NotList" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#{item}</#noparse>
</foreach>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}Start}
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} <![CDATA[ >= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}Start}
</if>
<if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}End}
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} <![CDATA[ <= ]]> <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}End}
</if>
</#if>
<#if column.javaType == "String">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null and conditionParamRef.${column.javaField} != ''">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} like <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} like <#noparse>#{${_conditionParam_}</#noparse>.${column.javaField}}
</if>
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} is null
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}List') and conditionParamRef.${column.javaField}List.size() > 0">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} in
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} in
<foreach collection="conditionParamRef.${column.javaField}List" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#</#noparse>{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}NotList') and conditionParamRef.${column.javaField}NotList.size() > 0">
<#noparse>${_conditionType_}</#noparse> a.${column.columnName} not in
<#noparse>${_conditionType_}</#noparse> a.${column.isKeyWord(column.columnName)} not in
<foreach collection="conditionParamRef.${column.javaField}NotList" open="(" close=")" index="index" item="item" separator=",">
<#noparse>#</#noparse>{item}
</foreach>
......@@ -373,17 +373,17 @@
<#if column.javaType == "Date">
<if test="conditionParamRef.containsKey('${column.javaField}')">
<if test="conditionParamRef.${column.javaField} != null ">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} = <#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}}
<#noparse>$</#noparse>{_conditionType_} a.${column.isKeyWord(column.columnName)} = <#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}}
</if>
<if test="conditionParamRef.${column.javaField} == null">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} is null
<#noparse>$</#noparse>{_conditionType_} a.${column.isKeyWord(column.columnName)} is null
</if>
</if>
<if test="conditionParamRef.containsKey('${column.javaField}Start') and conditionParamRef.${column.javaField}Start != null and conditionParamRef.${column.javaField}Start!=''">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} <![CDATA[ >= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}Start},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
<#noparse>$</#noparse>{_conditionType_} a.${column.isKeyWord(column.columnName)} <![CDATA[ >= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}Start},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('${column.javaField}End') and conditionParamRef.${column.javaField}End != null and conditionParamRef.${column.javaField}End!=''">
<#noparse>$</#noparse>{_conditionType_} a.${column.columnName} <![CDATA[ <= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}End},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
<#noparse>$</#noparse>{_conditionType_} a.${column.isKeyWord(column.columnName)} <![CDATA[ <= ]]> STR_TO_DATE(left(concat(<#noparse>#{$</#noparse>{_conditionParam_}.${column.javaField}End},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
</#if>
</#list>
......@@ -402,7 +402,7 @@
<trim suffixOverrides="," suffix="">
<#list columns as column>
<if test="orderCol.containsKey('${column.javaField}')">
a.${column.columnName}
a.${column.isKeyWord(column.columnName)}
<if test='orderCol.${column.javaField} != null and "DESC".equalsIgnoreCase(orderCol.${column.javaField})'>DESC</if>
,
</if>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment