在ibatis里面,由于使用的是preparedStatement,所以当遇到 in查询的时候,直接一个输入参数的做法是不正确的。
比如
使用ibatis处理in查询问题
这样当传一个id的时候当然不会有问题,但是如果是传多个id,并以“,”隔开,系统会抛出非法数字的错误。解决这个问题,只能使用动态sql
在sql-map中动态sql的关键字是$key$,那么上面这个问题就应该这样解决:
这样只要将用逗号隔开的id传进去就行了。
比如
<parameterMap id="del" class="java.lang.String">
<parameter property="ids">
</parameterMap>使用ibatis处理in查询问题
<delete id="delstm" parameterMap="del">
<![CDATA[
delete from yourtable where keyid in(#ids#)
]]>
</delete>这样当传一个id的时候当然不会有问题,但是如果是传多个id,并以“,”隔开,系统会抛出非法数字的错误。解决这个问题,只能使用动态sql
在sql-map中动态sql的关键字是$key$,那么上面这个问题就应该这样解决:
<delete id="delstm" parameterClass="java.lang.String">
<![CDATA[
delete from yourtable where keyid in($dis$)
]]>
</delete>这样只要将用逗号隔开的id传进去就行了。
本文详细解释了在使用Ibatis处理In查询时遇到的问题,特别是当使用逗号分隔的多个参数时,如何正确传递参数以避免非法数字错误。通过引入动态SQL关键字,实现参数的有效传递。
1792

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



