Consulta difusa de MyBatis como%

Cuando configuramos el archivo del asignador, queremos configurar la consulta difusa, así:

<select id="getAllUserRoleDepByName" resultMap="userRoleDepList">
        select
        u.*,r.*,d.* from
        user u left join user_role ur on u.user_id=ur.user_id
        left join role r on
        r.role_id=ur.role_id
        left join department d on
        <if test="user_name != null">
        u.department_id = d.department_id where u.user_name like '%#{user_name}%'
        </if>
    </select>

O así:

<select id="getAllUserRoleDepByName" resultMap="userRoleDepList">
        select
        u.*,r.*,d.* from
        user u left join user_role ur on u.user_id=ur.user_id
        left join role r on
        r.role_id=ur.role_id
        left join department d on
        <if test="user_name != null">
        u.department_id = d.department_id where u.user_name like '%' + #{user_name} + '%'
        </if>
    </select>

Descubrí que no funcionaba. Informé de un error cuando lo ejecuté. También encontré algunos métodos en Internet, pero fallé. Finalmente, vi el método de vinculación en el sql dinámico en el sitio web oficial de mybatis para resolver el problema. El método es el siguiente:
Defina los atributos relevantes en bind.

<select id="getAllUserRoleDepByName" resultMap="userRoleDepList">
        <bind name="pattern" value="'%' + user_name + '%'"/>
        select
        u.*,r.*,d.* from
        user u left join user_role ur on u.user_id=ur.user_id
        left join role r on
        r.role_id=ur.role_id
        left join department d on
        <if test="user_name != null">
        u.department_id = d.department_id where u.user_name like #{pattern}
        </if>
    </select>

Supongo que te gusta

Origin blog.csdn.net/u010857795/article/details/71565280
Recomendado
Clasificación