<?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="org.mybatis.caches.ehcache.LoggingEhcache"/>

#end
#if(${baseResultMap})
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
#foreach($field in ${table.fields})
#if(${field.keyFlag})##生成主键排在第一位
        <id column="${field.name}" property="${field.propertyName}" />
#end
#end
#foreach($field in ${table.commonFields})##生成公共字段
    <result column="${field.name}" property="${field.propertyName}" />
#end
#foreach($field in ${table.fields})
#if(!${field.keyFlag})##生成普通字段
        <result column="${field.name}" property="${field.propertyName}" />
#end
#end
    </resultMap>

#end
#if(${baseColumnList})
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        ${tableRebuild}
    </sql>

#end

    <select id="customList" resultType="${package.EntitySpecResult}.${entity}Result" parameterType="${package.EntitySpecParams}.${entity}Param">
        select
        <include refid="Base_Column_List"/>
        from ${table.name} where 1 = 1
        #foreach($field in ${mapperConditions})
            <if test="paramCondition.${field.fieldCamel} != null and paramCondition.${field.fieldCamel} != ''">
                and ${field.fieldUnderline} like CONCAT('%',#{paramCondition.${field.fieldCamel}},'%')
            </if>
        #end
    </select>

    <select id="customMapList" resultType="map" parameterType="${package.EntitySpecParams}.${entity}Param">
        select
        <include refid="Base_Column_List"/>
        from ${table.name} where 1 = 1
        #foreach($field in ${mapperConditions})
            <if test="paramCondition.${field.fieldCamel} != null and paramCondition.${field.fieldCamel} != ''">
                and ${field.fieldUnderline} like CONCAT('%',#{paramCondition.${field.fieldCamel}},'%')
            </if>
        #end
    </select>

    <select id="customPageList" resultType="${package.EntitySpecResult}.${entity}Result" parameterType="${package.EntitySpecParams}.${entity}Param">
        select
        <include refid="Base_Column_List"/>
        from ${table.name} where 1 = 1
        #foreach($field in ${mapperConditions})
            <if test="paramCondition.${field.fieldCamel} != null and paramCondition.${field.fieldCamel} != ''">
                and ${field.fieldUnderline} like CONCAT('%',#{paramCondition.${field.fieldCamel}},'%')
            </if>
        #end
    </select>

    <select id="customPageMapList" resultType="map" parameterType="${package.EntitySpecParams}.${entity}Param">
        select
        <include refid="Base_Column_List"/>
        from ${table.name} where 1 = 1
        #foreach($field in ${mapperConditions})
            <if test="paramCondition.${field.fieldCamel} != null and paramCondition.${field.fieldCamel} != ''">
                and ${field.fieldUnderline} like CONCAT('%',#{paramCondition.${field.fieldCamel}},'%')
            </if>
        #end
    </select>

</mapper>
