MyBatis高级查询

Posted ruijiege

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis高级查询相关的知识,希望对你有一定的参考价值。

<?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">

<!-- namespace表示命名空间  保证它是唯一   cn.itsource.mybatis.dao.impl.ProductDaoImpl + id="getUserById"-->
<mapper namespace="_02_highquery.EmployeeMapper">
    <!-- id名称和ProductMapper接口方法一样-->
    <select id="query" resultType="_02_highquery.Employee" parameterType="_02_highquery.EmployeeQuery">
        select * from employee
        <where>
            <include refid="whereSql"></include>
        </where>
    </select>
    <!--抽取sql通过include refid="whereSql"引用-->
    <sql id="whereSql">
        <if test="keywords != null">
            <!-- /* and name like %${keywords}% or password like %${keywords}%*/ -->
            <!-- (1)不行-->
            <!--  and name like %#{keywords}% or password like %#{keywords}% -->
            <!-- (2)可以使用 拼接字符串 存在sql注入-->
            <!-- and name like ‘%${keywords}%‘ or password like ‘%${keywords}%‘ -->
            <!-- (3) concat函数-->
              and name like concat("%",#{keywords},"%")
        </if>
        <if test="minAge != null">
            and age >= #{minAge}
        </if>
        <!-- 转义1)-->

        <!--<if test="maxAge != null">
            and age &lt;= #{maxAge}
        </if>-->
        <!-- 写法(2)CDATA XML-->
        <if test="maxAge != null">
            <![CDATA[
                 and age <= #{maxAge}
              ]]>
        </if>
    </sql>






</mapper>

 

以上是关于MyBatis高级查询的主要内容,如果未能解决你的问题,请参考以下文章

每天玩转3分钟 MyBatis-Plus - 3. 高级查询(条件构造器)

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

mybatis模糊查询

MyBatis高级查询

每天玩转3分钟 MyBatis-Plus - 6. select 用法

MyBatis高级查询