mybatis foreach的使用
*foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。*
**foreach元素的属性主要有 item,index,collection,open,separator,close。**
~item表示集合中每一个元素进行迭代时的别名
~index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
~open表示该语句以什么开始,
~separator表示在每次进行迭代之间以什么符号作为分隔 符,
~close表示以什么结束。
select
a.type,
b.*,
o.id 'oid',
o.order_sn 'orderSn',
o.add_time 'addTime',
o.order_status 'orderStatus',
a.start_time 'startTime',
a.delivery_time 'deliveryTime',
a.end_time 'endTime',
o.actual_price 'actualPrice'
from dts_brand b
left join dts_order_goods og on og.brand_id = b.id
left join dts_order o on o.id = og.order_id
left join dts_order_additional a on a.order_id = o.id
WHERE o.deleted = 0 and o.user_id = #{userId}
<if test="orderType!=null and orderType!=''">
and o.order_status in
<foreach collection="orderType" item="orderItem" open="(" separator="," close=")">
#{orderItem}
</foreach>
</if>
group by o.id
order by o.add_time desc
参数为数组时,尽量使用foreach,不要在业务层循环(频繁访问数据库)
<update id="updateGoods">
update dts_goods set is_on_sale = 0,update_time=now()
where id in(
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</update>