Mybatis--模糊查询 Like

Mybatis--模糊查询 Like

  1. 第一种(个人常用):使用CONCAT()函数

    <select id="selectPageList" resultType="com.shop.cms.category.vo.CmsCategoryListVO">
        SELECT
        <include refid="pageListVO"></include>
        FROM cms_content_category
        <where>
           <if test="param.categoryName != null and param.categoryName != ‘‘">AND `name` LIKE CONCAT(‘%‘, #{param.categoryName}, ‘%‘)</if>
        </where>
    </select>
  2. 第二种:使用#{}

    <select id="selectPageList" resultType="com.shop.cms.category.vo.CmsCategoryListVO">
        SELECT
        <include refid="pageListVO"></include>
        FROM cms_content_category
        <where>
           <if test="param.categoryName != null and param.categoryName != ‘‘">AND `name` LIKE #{param.categoryName}</if>
        </where>
    </select>

     注意:因为#{...}解析成sql语句时候,会在变量外侧自动加单引号‘  ‘,所以这里 % 需要使用双引号"  ",不能使用单引号 ‘  ‘,不然会查不到任何结果。

  3. 第三种:使用${}

    <select id="selectPageList" resultType="com.shop.cms.category.vo.CmsCategoryListVO">
        SELECT
        <include refid="pageListVO"></include>
        FROM cms_content_category
        <where>
           <if test="param.categoryName != null and param.categoryName != ‘‘">AND `name` LIKE ‘%${param.categoryName}%‘</if>
        </where>
    </select>

    注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 

  弊端:可能会引起sql的注入,平时尽量避免使用${...}

Mybatis--模糊查询 Like

上一篇:最新Cybersecurity Ventures网络安全500强,都上榜了哪些新公司?


下一篇:邻接表以及其算法应用(优化图的存储)