xiangpei
2025-04-18 ccadf9480d4e6a9dcc227a2a0b1f9ae0612e36fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
 
#if(${enableCache})
    <!-- 开启二级缓存 -->
    <cache type="${cacheClassName}"/>
 
#end
#if(${baseResultMap})
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="${package.Other}.vo.${voInfo.voName}">
    #foreach($field in ${table.fields})
    #if(${field.keyFlag})##生成主键排在第一位
        <id column="${field.columnName}" property="${field.propertyName}" />
    #end
    #end
    #foreach($field in ${voInfo.fields})
    #if(${field.propertyName} != "deleted" and ${field.propertyName} != "id" and ${field.propertyName} != "${field.refTableProperty}" and ${field.propertyName} != "${field.refTableProperty}List")##因为是直接映射到vo,deleted不需要
        <result column="${field.columnName}" property="${field.propertyName}" />
    #end
    #end
    #if(${hasRef})
    #foreach($field in ${refColumnList})
    #if(${field.refType} == "OTM")
        <collection column="${field.columnName}" property="${field.refTableProperty}List" select="selectRef${field.refTableVoName}" ofType="${package.Other}.vo.${field.refTableVoName}">
            #foreach($refField in ${field.returnColumnList})
            #if(${refField.column} == "id")
            <id column="${refField.column}" property="${refField.property}" />
            #else
            <result column="${refField.column}" property="${refField.property}" />
            #end
            #end
        </collection>
    #end
    #end
    #end
    </resultMap>
 
#end
 
    #if(${hasRef})
    #foreach($field in ${refColumnList})
    #if(${field.refType} == "OTO")
    <resultMap id="${field.refTableVoName}Map" type="${package.Other}.vo.${field.refTableVoName}">
    #foreach($returnField in ${field.returnColumnList})
        <result column="${returnField.asColumn}" property="${returnField.property}" />
    #end
    </resultMap>
    #end
    #end
    #end
 
    #if(${hasRef})
    #foreach($field in ${refColumnList})
    <select id="selectRef${field.refTableVoName}">
        SELECT
    #foreach($refField in ${field.returnColumnList})
            ${refField.column},
    #end
        FROM
            ${field.refTableName}
        WHERE
            ${field.refColumn} = #{id}
    </select>
    #end
    #end
 
 
 
#if(${baseColumnList})
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
#foreach($field in ${table.commonFields})
        ${field.columnName},
#end
        ${table.fieldNames}
    </sql>
#end
 
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            #foreach($field in ${voInfo.fields})
            ${voInfo.tableSimpleName}.${field.columnName},
            #end
            #foreach($field in ${refColumnList})
            #if(${field.refType} == "OTO")
            #foreach($returnField in ${field.returnColumnList})
            ${field.refTableSimpleName}.${returnField.column} as ${returnField.asColumn},
            #end
            #end
            #end
            ${voInfo.tableSimpleName}.id
        FROM
            ${table.name} ${voInfo.tableSimpleName}
            #foreach($field in ${refColumnList})
            #if(${field.refType} == "OTO")
                INNER JOIN ${field.refTableName} ${field.refTableSimpleName} ON ${voInfo.tableSimpleName}.${field.columnName} = ${field.refTableSimpleName}.${field.refColumn} AND ${field.refTableSimpleName}.deleted = 0
            #end
            #end
        WHERE
            ${voInfo.tableSimpleName}.id = #{id} AND ${voInfo.tableSimpleName}.deleted = 0
    </select>
 
 
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
        #foreach($field in ${voInfo.fields})
            ${voInfo.tableSimpleName}.${field.columnName},
        #end
        #foreach($field in ${refColumnList})
        #if(${field.refType} == "OTO")
        #foreach($returnField in ${field.returnColumnList})
            ${field.refTableSimpleName}.${returnField.column} as ${returnField.asColumn},
        #end
        #end
        #end
            ${voInfo.tableSimpleName}.id
        FROM
            ${table.name} ${voInfo.tableSimpleName}
            #foreach($field in ${refColumnList})
                #if(${field.refType} == "OTO")
                INNER JOIN ${field.refTableName} ${field.refTableSimpleName} ON ${voInfo.tableSimpleName}.${field.columnName} = ${field.refTableSimpleName}.${field.refColumn} AND ${field.refTableSimpleName}.deleted = 0
                #end
            #end
        WHERE
            ${voInfo.tableSimpleName}.deleted = 0
            #foreach($field in ${queryInfo.fields})
            <if test="query.${field.propertyName} != null and query.${field.propertyName} != ''">
                AND ${voInfo.tableSimpleName}.${field.columnName} = #{query.${field.propertyName}}
            </if>
            #end
    </select>
 
</mapper>