重构GenTableVo类中的表名和列名映射方法,改为返回相应的对象,更新VelocityUtils和mapper模板以使用新的映射方法

This commit is contained in:
dftre 2025-02-25 17:21:08 +08:00
parent 5114c7e5cc
commit a6a822e39e
3 changed files with 33 additions and 52 deletions

View File

@ -64,15 +64,15 @@ public class GenTableVo extends BaseEntity {
return allGenTableColumns; return allGenTableColumns;
} }
public Map<Long, String> getTableNameMap() { public Map<Long, GenTable> getTableMap() {
Map<Long, String> tableMap = new HashMap<>(); Map<Long, GenTable> tableMap = new HashMap<>();
if (table != null) { if (table != null) {
tableMap.put(table.getTableId(), table.getTableName()); tableMap.put(table.getTableId(), table);
} }
if (joinTables != null) { if (joinTables != null) {
for (GenTable genTable : joinTables) { for (GenTable genTable : joinTables) {
if (genTable != null) { if (genTable != null) {
tableMap.put(genTable.getTableId(), genTable.getTableName()); tableMap.put(genTable.getTableId(), genTable);
} }
} }
} }
@ -95,12 +95,12 @@ public class GenTableVo extends BaseEntity {
return tableMap; return tableMap;
} }
public Map<Long, String> getColumnNameMap() { public Map<Long, GenTableColumn> getColumnMap() {
Map<Long, String> columnMap = new HashMap<>(); Map<Long, GenTableColumn> columnMap = new HashMap<>();
List<GenTable> genTables = getAllGenTables(); List<GenTable> genTables = getAllGenTables();
for (GenTable genTable : genTables) { for (GenTable genTable : genTables) {
for (GenTableColumn genTableColumn : genTable.getColumns()) { for (GenTableColumn genTableColumn : genTable.getColumns()) {
columnMap.put(genTableColumn.getColumnId(), genTableColumn.getColumnName()); columnMap.put(genTableColumn.getColumnId(), genTableColumn);
} }
} }
return columnMap; return columnMap;

View File

@ -64,9 +64,9 @@ public class VelocityUtils
velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
velocityContext.put("columns", genTable.getColumns()); velocityContext.put("columns", genTable.getColumns());
velocityContext.put("table", genTable); velocityContext.put("table", genTable);
velocityContext.put("tableNameMap", genTableVo.getTableNameMap()); velocityContext.put("tableMap", genTableVo.getTableMap());
velocityContext.put("tableAliasMap", genTableVo.getTableAliasMap()); velocityContext.put("tableAliasMap", genTableVo.getTableAliasMap());
velocityContext.put("columnNameMap", genTableVo.getColumnNameMap()); velocityContext.put("columnMap", genTableVo.getColumnMap());
velocityContext.put("allColumns", genTableVo.getAllGenTableColumns()); velocityContext.put("allColumns", genTableVo.getAllGenTableColumns());
velocityContext.put("joinColunms", genTableVo.getJoinColumns()); velocityContext.put("joinColunms", genTableVo.getJoinColumns());
velocityContext.put("joinTablesMate", genTableVo.getJoinTablesMate()); velocityContext.put("joinTablesMate", genTableVo.getJoinTablesMate());

View File

@ -30,12 +30,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="select${ClassName}Vo"> <sql id="select${ClassName}Vo">
select select
#foreach ($column in $allColumns) #foreach ($column in $allColumns)
$tableAliasMap[$column.tableId].$columnNameMap[$column.columnId]#if($foreach.hasNext),#end #set($columnName=$columnMap[$column.columnId].columnName)
#set($tableAlias=$tableAliasMap[$column.tableId])
$tableAlias.$columnName#if($foreach.hasNext),#end
#end #end
from $tableNameMap[$table.tableId] $tableAliasMap[$table.tableId] from $table.tableName $table.tableAlias
#if($joinTablesMate) #if($joinTablesMate)
#foreach($joinTable in $joinTablesMate) #foreach($joinTable in $joinTablesMate)
${joinTable.joinType} join $tableNameMap[$joinTable.rightTableId] ${joinTable.rightTableAlias} on ${joinTable.rightTableAlias}.$columnNameMap[$joinTable.rightTableFk] = ${joinTable.leftTableAlias}.$columnNameMap[$joinTable.leftTableFk] #set($leftColumnName=$columnMap[$joinTable.leftTableFk].columnName)
#set($leftTableAlias=$joinTable.leftTableAlias)
#set($rightColumnName=$columnMap[$joinTable.rightTableFk].columnName)
#set($rightTableAlias=$joinTable.rightTableAlias)
#set($newTableName=$tableMap[$joinTable.newTableId].tableName)
#set($newTableAlias=$tableAliasMap[$joinTable.newTableId])
${joinTable.joinType} join $newTableName $newTableAlias on $rightTableAlias.$rightColumnName = $leftTableAlias.$leftColumnName
#end #end
#end #end
</sql> </sql>
@ -43,57 +51,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result"> <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/> <include refid="select${ClassName}Vo"/>
<where> <where>
#foreach($column in $columns) #foreach($column in $allColumns)
#set($queryType=$column.queryType) #set($queryType=$column.queryType)
#set($javaField=$column.javaField) #set($javaField=$column.javaField)
#set($javaType=$column.javaType) #set($javaType=$column.javaType)
#set($columnName=$columnNameMap[$column.columnId]) #set($columnName=$columnMap[$column.columnId].columnName)
#set($tableAlias=$tableAliasMap[$column.tableId])
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query) #if($column.query)
#if($column.queryType == "EQ") #if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName = #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName = #{$javaField}</if>
#elseif($queryType == "NE") #elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName != #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName != #{$javaField}</if>
#elseif($queryType == "GT") #elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName &gt; #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName &gt; #{$javaField}</if>
#elseif($queryType == "GTE") #elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName &gt;= #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT") #elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName &lt; #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE") #elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName &lt;= #{$javaField}</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE") #elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$table.tableId].$columnName like concat('%', #{$javaField}, '%')</if> <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAlias.$columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN") #elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $tableAliasMap[$table.tableId].$columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if> <if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $tableAlias.$columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end
#end
#if($joinColunms)
#foreach($column in $joinColunms)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$columnNameMap[$column.columnId])
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName = #{$javaField}</if>
#elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName != #{$javaField}</if>
#elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName &gt; #{$javaField}</if>
#elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $tableAliasMap[$column.tableId].$columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $tableAliasMap[$column.tableId].$columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end #end
#end #end
#end #end