ids 这个 String 的格式怎么样的?多个 id 之间怎么分开? 恐怕不行,你试试把它换成 list 或者 map 传进来
我的ids传过来是1,2,3,4这样的
<statement id="getMenu" parameterClass="java.util.List" resultMap="menuResult">select * from APP_MENU where (TASK_ID,AUTH_CODE) in <iterate property="SampleData" open="(" close=")" conjunction=",">$SampleData[].task$,$SampleData[].authCode$</iterate></statement> 这里有个传入 list 的 where in 操作的例子,你可以参考一下
我的是ibatis中批量操作操作的mysql
为什么不在业务层用for循环 然后一条一条更新呢
这种写法是可以的,但用$$这种写法容易被sql注入
版主这个和我在程序里面用for循环差不多的!
版主这个和我在程序里面用for循环差不多的! 不一样吧。 这个只操作数据库一次。 程序里用 for 循环的话,就是 N 次数据库操作。
版主这个和我在程序里面用for循环差不多的! 不一样吧。 这个只操作数据库一次。 程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试
理论上来说 ,楼主这样写 应该没问题啊。。 你去掉<![CDATA[ ]]>这个试试呢。。
版主这个和我在程序里面用for循环差不多的! 不一样吧。 这个只操作数据库一次。 程序里用 for 循环的话,就是 N 次数据库操作。 <update id="updateStatusBatch" parameterClass="hashMap"> update Question set status = #status# <dynamic prepend="where questionId in"> <isNotNull property="actionIds"> <iterate property="actionIds" open="(" close=")" conjunction=","> #actionIds[]# </iterate> </isNotNull> </dynamic> </update > 这个表示没看懂,#status# 这个参数值如何得到?property="actionIds" actionIds是哪里来的?
版主这个和我在程序里面用for循环差不多的! 不一样吧。 这个只操作数据库一次。 程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试我现在就是想用类多传几个参数进来,String只能传递一个参数,其它参数就只能写死了!我之前就是ids是String传递过来的,状态什么的写死了!
#status# 是你传进来的 hashMap 集合里的 key 为 status 的那个值。
版主这个和我在程序里面用for循环差不多的! 不一样吧。 这个只操作数据库一次。 程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试我现在就是想用类多传几个参数进来,String只能传递一个参数,其它参数就只能写死了!我之前就是ids是String传递过来的,状态什么的写死了!我用类不也是同样的道理吗?怎么就不可以呢?
<select id="getCarveoutStrs" parameterClass="com.jml.coproject.domain.CoProject" resultClass="com.jml.coproject.domain.DicCarveoutMode"> SELECT carveoutName FROM dic_carveout_mode WHERE carveoutID in ($carveoutIDS$) </select> 我们程序里面的一段 ,你看看把
可以传进来的 但是你用的 id in ($ids$) $$不会默认拼'' 所以说 你传进来的值错了!少了'' 正确的形式应该是 '1', '2', '3' 这样就ok了!
ids是String类型的
恐怕不行,你试试把它换成 list 或者 map 传进来
resultMap="menuResult">select * from APP_MENU where (TASK_ID,AUTH_CODE) in
<iterate property="SampleData" open="(" close=")" conjunction=",">$SampleData[].task$,$SampleData[].authCode$</iterate></statement>
这里有个传入 list 的 where in 操作的例子,你可以参考一下
版主这个和我在程序里面用for循环差不多的!
版主这个和我在程序里面用for循环差不多的!
不一样吧。
这个只操作数据库一次。
程序里用 for 循环的话,就是 N 次数据库操作。
版主这个和我在程序里面用for循环差不多的!
不一样吧。
这个只操作数据库一次。
程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试
你去掉<![CDATA[ ]]>这个试试呢。。
版主这个和我在程序里面用for循环差不多的!
不一样吧。
这个只操作数据库一次。
程序里用 for 循环的话,就是 N 次数据库操作。
<update id="updateStatusBatch" parameterClass="hashMap">
update
Question
set
status = #status#
<dynamic prepend="where questionId in">
<isNotNull property="actionIds">
<iterate property="actionIds" open="(" close=")" conjunction=",">
#actionIds[]#
</iterate>
</isNotNull>
</dynamic>
</update > 这个表示没看懂,#status# 这个参数值如何得到?property="actionIds" actionIds是哪里来的?
版主这个和我在程序里面用for循环差不多的!
不一样吧。
这个只操作数据库一次。
程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试我现在就是想用类多传几个参数进来,String只能传递一个参数,其它参数就只能写死了!我之前就是ids是String传递过来的,状态什么的写死了!
是你传进来的 hashMap 集合里的 key 为 status 的那个值。
版主这个和我在程序里面用for循环差不多的!
不一样吧。
这个只操作数据库一次。
程序里用 for 循环的话,就是 N 次数据库操作。嗯好的,我试试我现在就是想用类多传几个参数进来,String只能传递一个参数,其它参数就只能写死了!我之前就是ids是String传递过来的,状态什么的写死了!我用类不也是同样的道理吗?怎么就不可以呢?
<select id="getCarveoutStrs" parameterClass="com.jml.coproject.domain.CoProject" resultClass="com.jml.coproject.domain.DicCarveoutMode">
SELECT carveoutName FROM dic_carveout_mode WHERE carveoutID in ($carveoutIDS$)
</select>
我们程序里面的一段 ,你看看把
正确的形式应该是 '1', '2', '3' 这样就ok了!