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

    <sql id="baseSelectColumns">
        u.iIncrement AS iIncrement,
        u.sUserName  AS sUserName,
        u.iStaffId   AS iStaffId,
        s.sStaffName AS staffName,
        u.sUserNo    AS sUserNo,
        s.sDepartment AS department,
        u.sUserType  AS sUserType,
        u.sLanguage  AS sLanguage,
        u.bDeleted   AS bDeleted,
        u.tLastLoginDate AS tLastLoginDate,
        u.sCreatedBy AS sCreatedBy,
        u.tCreateDate AS tCreateDate
    </sql>

    <sql id="filterClause">
        <where>
            <if test="value != null and value != ''">
                <choose>
                    <when test="matchOp == 'contains'">${field} LIKE CONCAT('%', #{value}, '%')</when>
                    <when test="matchOp == 'notContains'">${field} NOT LIKE CONCAT('%', #{value}, '%')</when>
                    <when test="matchOp == 'equals'">${field} = #{value}</when>
                </choose>
            </if>
        </where>
    </sql>

    <select id="pageWithFilter" resultType="com.xly.erp.module.usr.vo.UserListVO">
        SELECT <include refid="baseSelectColumns"/>
        FROM tUser u
        LEFT JOIN tStaff s ON s.iIncrement = u.iStaffId AND s.bDeleted = 0
        <include refid="filterClause"/>
        ORDER BY u.iIncrement DESC
        LIMIT #{offset}, #{size}
    </select>

    <select id="countWithFilter" resultType="long">
        SELECT COUNT(1)
        FROM tUser u
        LEFT JOIN tStaff s ON s.iIncrement = u.iStaffId AND s.bDeleted = 0
        <include refid="filterClause"/>
    </select>

</mapper>