mybatis中使用mysql的模糊查询字符串拼接(like)

Posted shuaiflying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中使用mysql的模糊查询字符串拼接(like)相关的知识,希望对你有一定的参考价值。

方法一:


<!--  根据hid,hanme,grade,模糊查询医院信息-->

方法一:
List<Hospital> getHospitalLike(@Param("selectword") String selectword);
<select id="getHospitalLike" resultType="com.hand.hand.domain.Hospital">
SELECT *
FROM hospital
where hid=cast(#{selectword} as signed INTEGER ) OR hname like concat(\'%\',#{selectword},\'%\')
OR grade like concat(\'%\',#{selectword},\'%\')
</select>


 where hid=cast(#{selectword} as signed INTEGER )  hid为Integer类型,而参数selectword为string类型,所以用cast将string转化为Integer
where hname like concat(\'%\',#{selectword},\'%\') 字符串拼接,将%和selectword拼接成%selectword%

方法二:动态sql中的bind
List<Hospital> getHospitalLike(@Param("selectword") String selectword);
<select id="getHospitalLike" resultType="com.hand.hand.domain.Hospital">
<bind name="bindselectword" value="\'%\'+selectword+\'%\'"></bind>
SELECT *
FROM hospital
<if test="selectword!=null">
where hid=cast(#{selectword} as signed INTEGER ) OR hname like #{bindselectword}
OR grade like #{bindselectword}
</if>

</select>

方法三:
在service层直接拼接字符串,xml直接使用转入的参数



此方法测试出错(参考博客后,测试出错):
<!--where hid like \'%\'||#{selectword}||\'%\' or hname like \'%\'||#{selectword}||\'%\' or grade like \'%\'||#{selectword}||\'%\'-->


其他拼接法,可参考:https://www.cnblogs.com/dushan/p/4766954.html

以上是关于mybatis中使用mysql的模糊查询字符串拼接(like)的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis中模糊查询Mysql的方法

Mybatis模糊查询MySQL中记录的的常用三种方法

Mybatis中模糊查询的各种写法(转)

Mybatis中模糊查询的各种写法

mybatis中mysql和oracle的差异

Mybatis各种模糊查询