SysUserMapper.xml 3.14 KB
<?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="com.xly.erp.module.usr.mapper.SysUserMapper">

    <sql id="baseFrom">
        FROM sys_user u
        LEFT JOIN sys_employee e ON e.iIncrement = u.iEmployeeId
        LEFT JOIN sys_department d ON d.iIncrement = e.iDepartmentId
    </sql>

    <sql id="whereClause">
        <where>
            <if test="p.sqlQueryColumn != null and p.queryValue != null and p.queryValue != ''">
                <choose>
                    <when test="'contains'.equals(p.matchMode)">
                        AND ${p.sqlQueryColumn} LIKE CONCAT('%', #{p.queryValue}, '%')
                    </when>
                    <when test="'notContains'.equals(p.matchMode)">
                        AND (${p.sqlQueryColumn} NOT LIKE CONCAT('%', #{p.queryValue}, '%')
                             OR ${p.sqlQueryColumn} IS NULL)
                    </when>
                    <otherwise>
                        AND ${p.sqlQueryColumn} = #{p.queryValue}
                    </otherwise>
                </choose>
            </if>
            <if test="p.userType != null">
                AND u.sUserType = #{p.userType}
            </if>
            <if test="p.isDeleted != null">
                AND u.iIsDeleted = #{p.isDeleted}
            </if>
        </where>
    </sql>

    <resultMap id="UserListItemVoMap" type="com.xly.erp.module.usr.vo.UserListItemVo">
        <id     property="userId"          column="userId"/>
        <result property="username"        column="username"/>
        <result property="employeeName"    column="employeeName"/>
        <result property="userCode"        column="userCode"/>
        <result property="departmentName"  column="departmentName"/>
        <result property="userType"        column="userType"/>
        <result property="language"        column="language"/>
        <result property="isDeleted"       column="isDeleted" javaType="java.lang.Boolean"/>
        <result property="lastLoginDate"   column="lastLoginDate"/>
        <result property="createdBy"       column="createdBy"/>
        <result property="createdDate"     column="createdDate"/>
    </resultMap>

    <select id="selectByQuery" resultMap="UserListItemVoMap">
        SELECT u.iIncrement      AS userId,
               u.sUsername       AS username,
               e.sEmployeeName   AS employeeName,
               u.sUserCode       AS userCode,
               d.sDepartmentName AS departmentName,
               u.sUserType       AS userType,
               u.sLanguage       AS language,
               u.iIsDeleted      AS isDeleted,
               u.tLastLoginDate  AS lastLoginDate,
               u.sCreatedBy      AS createdBy,
               u.tCreateDate     AS createdDate
        <include refid="baseFrom"/>
        <include refid="whereClause"/>
        ORDER BY u.${p.sqlSortField} ${p.sqlSortOrder}
        LIMIT #{p.offset}, #{p.limit}
    </select>

    <select id="countByQuery" resultType="long">
        SELECT COUNT(*)
        <include refid="baseFrom"/>
        <include refid="whereClause"/>
    </select>

</mapper>