使用mysql实现模糊查询,对于不同参数类型,使用同一种方法,我在查询的过程中会出现错误,对于String类型和Int类型,使用下面这两种方法,测试后均能成功实现模糊查询。
1、参数为String类型
dao层接口文件,其中queryString均为前端传过来的参数,因为我的查询字段非常多,所以传过来的参数也比较多
List<Patent> findByCondition(@Param("queryString") String queryString,@Param("queryString11") String queryString11,@Param("queryString22") String queryString22,@Param("queryString3") String queryString3,@Param("queryString4") String queryString4,@Param("queryString5") String queryString5);
这其中我所有的参数类型均为String类型
<select id="findByCondition" resultType="patent">
select * from t_patent
<where>
1 = 1
<if test="queryString != null">
and id = #{queryString }
</if>
<if test="queryString11 != null">
and name like "%"#{queryString11}"%"
</if>
<if test="queryString22 != null">
and number like "%"#{queryString22}"%"
</if>
<if test="queryString3 != null">
and inventor like "%"#{queryString3}"%"
</if>
<if test="queryString4 != null">
and status like "%"#{queryString4}"%"
</if>
<if test="queryString5 != null">
and technosphere like "%"#{queryString5}"%"
</if>
</where>
</select>
2、参数为int类型
dao层接口文件,queryString1和queryString2为前端传过来的参数
List<Brand> findByCondition(@Param("queryString1") Integer queryString1, @Param("queryString2") Integer queryString2);
对queryString2实现模糊查询,queryString2为int类型时
<select id="findByCondition" resultType="brand">
select * from t_brand
<where>
1 = 1
<if test="queryString1 != null ">
and id = #{queryString1 }
</if>
<if test="queryString2 != null ">
and registerNumber like '%${queryString2}%'
</if>
</where>
</select>