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>
