最近项目里有一个IN查询,前端会传来一串json格式的uids字符串,格式如下:
uids:1,2,3,4,5
当时后台项目里封装了Search的实体类,而实体类里面的成员变量是String uids,这个IN查询的parameterType就是Search,但我需要传一个List进去进行IN查询的sql拼接,不过为了拼接一个IN查询就要在实体类中增加一个List成员变量,还需要在controller层里面做一个转换
String[] uid = uids.split(",")
虽然也能解决问题,但是总觉得不够优雅,后面看了一下项目里之前的同事是怎么处理的,发现可以直接在mybatis的foreach标签里处理的,如下:
<sql id="queryWhere">
<if test="uids !=null and uids !=''">
AND uid IN
<foreach collection="uids.split(',')" item="uid" index="index"
open="(" close=")" separator=",">
#{uid}
</foreach>
</if>
</sql>
可以直接在collection属性中进行uids.split(','),这样看起来就优雅多了