今天碰到个问题,解决了很久才搞定,来记录下,希望可以帮助到大家
一直报错:invalid comparison: java.util.ArrayList and java.lang.String,一直没有考虑是我后来添加的
and ascriptionId != ’ ’ 所带来的问题.
下面错误源码:
这是一个根据list集合的查找数据的 sql,在接收list的时候加了判断 list != ‘ ’ “”,引起了集合与Stirng类型的比较,故报错
<select id="userlistPage" parameterType="page" resultType="pd">
...
<if test="ascriptionId != null and ascriptionId != ''">
and u.ascriptionId in
<foreach collection="pd.ascriptionId" index="index" item="item" open="('" separator="','" close="')">${item}</foreach>
...
</if>
</select>
解决方案: ①将判断条件改为 : list.size >0
<select id="userlistPage" parameterType="page" resultType="pd">
...
<if test="ascriptionId != null and ascriptionId >0 ">
and u.ascriptionId in
<foreach collection="pd.ascriptionId" index="index" item="item" open="('" separator="','" close="')">${item}</foreach>
...
</select>
②甚至可以考虑这样:
<select id="userlistPage" parameterType="page" resultType="pd">
...
<if test="ascriptionId != null">
and u.ascriptionId in
<foreach collection="pd.ascriptionId" index="index" item="item" open="('" separator="','" close="')">${item}</foreach>
...
</select>
实际上我就是用②的方式。
另外要说明一点#{}和美元符号的用法区别,我这里简单赘述几句,美元符号是原样输入;而#{}是根据传参的类型决定。
我在这个地方就不能用#{},因为page里面没有那个get方法,总是报错: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘__frch_item_0’ in ‘class com.fh.entity.Page’!
3082

被折叠的 条评论
为什么被折叠?



