前言
不知道大家在开发中有没有这样的经历:根据条件过滤列表数据项。
这种的条件少的还好,比如根据姓名或者性别过滤,这样不仅页面会稍微美观一些,对于sql的压力以及后端的代码量也是会轻松不少的。
但是条件多了,条件1,条件2,条件3…条件100,这时候后端的接口就会一个一个的if判断,不断的追加条件(做为后端开发深有体会,头大)
我给大家简单画个图,大家就明白了:
那么有没有一种方式,可以又美化页面,不增加使用者的视觉疲劳,又能做到只输入一个关键字,就能将全部的数据按照输入的关键字进行过滤,从而只留下符合关键字信息的呢。
当然有,今天在做自己项目的时候就遇到了这个问题,正好借着这个机会分享我的思路以及相关的代码。
示例:
select a,b,c from table concat(a,b,c) like concat('%',x,'%')
实战:
query:条件集合
content: 是封装了 姓名/电话…
<select id="wnpersonInfoesPage" resultType="com.dwkj.yunxinbang.adresslist.represenation.WnpersonInfoPageResponse">
SELECT *
FROM wnpersonalinfo_old as info
<where>
1 = 1
<if test="query.content != null and query.content != ''">
and concat(info.name,info.phone1,info.advantage,info.company) like concat('%', #{query.content} ,'%')
</if>
AND info.del_flag = "0000-00-00 00:00:00"
AND info.mp_id = #{query.mpId}
</where>
</select>