UserMapper.xml 1.63 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.UserMapper">

    <!-- REQ-USR-003 用户列表查询:LEFT JOIN tStaff + 动态 WHERE。
         query.column 由 service 层白名单映射,绝不接受用户原始输入。 -->
    <select id="searchUsers" resultType="com.xly.erp.module.usr.vo.UserListItemVO">
        SELECT
            u.iIncrement, u.sUserName, s.sStaffName, u.sUserNo,
            s.sDepartment, u.sUserType, u.sLanguage, u.bDeleted,
            u.tLastLoginDate, u.sCreatedBy, u.tCreateDate
        FROM tUser u
        LEFT JOIN tStaff s ON u.iStaffId = s.iIncrement AND s.bDeleted = 0
        <where>
            <if test="query.queryField != 'deleted'">
                u.bDeleted = 0
            </if>
            <if test="query.column != null and query.column != '' and query.queryValue != null and query.queryValue != ''">
                AND
                <choose>
                    <when test="query.matchType == 'equals'">
                        ${query.column} = #{query.queryValue}
                    </when>
                    <when test="query.matchType == 'notContains'">
                        ${query.column} NOT LIKE CONCAT('%', #{query.queryValue}, '%')
                    </when>
                    <otherwise>
                        ${query.column} LIKE CONCAT('%', #{query.queryValue}, '%')
                    </otherwise>
                </choose>
            </if>
        </where>
        ORDER BY u.tCreateDate DESC, u.iIncrement DESC
    </select>
</mapper>