mybatis实现模糊查询时%%的处理

背景:需要通过mybatis实现简单的字段like模糊查询,%如何处理

方法一: 完整范例查询语句如下:

<select id="queryRecord" resultType="db.model.Record"
            parameterType="java.lang.String">
        select a.recordId as recordID,a.name as name,
        TRIM(TRAILING . from b.name) as zoneName,a.content as content,d.name as envName
        from records as a
        left join zones as b on a.zoneID = b.zoneID
        left join (select distinct(zoneId),env from profile) as c on b.zoneID = c.zoneId
        left join t_enviroment as d on c.env = d.id
        where a.content like concat(%,#{
             
      searchText},%) or
        concat(a.name,.,TRIM(TRAILING . from b.name)) like concat(%,#{
             
      searchText},%)
        order by a.recordId;
</select>

通过concat函数,将%和搜索关键字链接起来:

like concat(%,#{searchText},%)
like concat(%,#{searchText},%)

方法二: 参数直接添加%,比如还是上面的查询:

// java代码
searchText = % +searchText + %;
queryRecord(searchText);
// java代码 searchText = % +searchText + %; queryRecord(searchText);

查询语句:

<select id="queryRecord" resultType="db.model.Record"
            parameterType="java.lang.String">
        select a.recordId as recordID,a.name as name,
        TRIM(TRAILING . from b.name) as zoneName,a.content as content,d.name as envName
        from records as a
        left join zones as b on a.zoneID = b.zoneID
        left join (select distinct(zoneId),env from profile) as c on b.zoneID = c.zoneId
        left join t_enviroment as d on c.env = d.id
        where a.content like #{
             
      searchText}  
        or concat(a.name,.,TRIM(TRAILING . from b.name)) like #{
             
      searchText}
        order by a.recordId;
</select>
经验分享 程序员 微信小程序 职场和发展