问题描述:在mybatis中的xml文件中,使用sql语句完成在两个关键字的模糊查询,但是在查询的时候,查询的结果不全,因为有些数据中的关键字是空的,这种信息就搜不到,其他的都可以显示。
原始代码:
select id="queryPassMember" parameterType="map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from shop_employee_relation
<where>
<if test="shopId != null">
SHOP_ID= #{shopId}
and delete_flag=1
</if>
<if test="mobile !=null ">
AND shopkeeper_phone LIKE
concat(concat('%',#{mobile}),'%')
</if>
<if test="memberName !=null ">
AND member_name LIKE concat(concat('%',#{memberName}),'%')
</if>
</where>
order by ROLE asc
</select>
由于mybatis使用的不是很流畅,所以想了很久,查了不少的模糊查询的语句,但是也没有解决,最后找到了原因
<select id="queryPassMember" parameterType="map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from shop_employee_relation
<where>
<if test="shopId != null">
SHOP_ID= #{shopId}
and delete_flag=1
</if>
<if test="mobile !=null and mobile !=''">
AND shopkeeper_phone LIKE
concat(concat('%',#{mobile}),'%')
</if>
<if test="memberName !=null and memberName !=''">
AND member_name LIKE concat(concat('%',#{memberName}),'%')
</if>
</where>
order by ROLE asc
</select>
这样就实现了有关键字的时候按照关键字查询,没有关键字的时候就进行全部查询,杜绝了当一条数据中没有其关键字的时候漏查的现象。
题外话:推荐一首歌:林宥嘉的《成全》,感觉还行,画面感很强。