<select id="listShoppingCartByCartId" resultMap="ShoppingCartVoMap">
SELECT sc.cart_id,
sc.product_id,
sc.sku_id,
sc.user_id,
sc.cart_num,
sc.cart_time,
sc.product_price,
sc.sku_props,
p.product_name,
pi.url,
s.sell_price,
s.original_price,
s.sku_name
FROM product p
INNER JOIN `shopping_cart` sc on sc.product_id = p.product_id
INNER JOIN product_img pi on sc.product_id = pi.item_id
inner join product_sku s on s.sku_id = sc.sku_id
where is_main = 1
and sc.cart_id in
<foreach collection="cartId" item="cid" separator="," open="(" close=")">
#{cid}
</foreach>
</select>
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。
collection是这里面比较难得下面我们详细介绍一下实际中的运用:
collection指的是mapper中传过来的参数
这里的cartId其实是一个list
如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可
如果传入的参数是多个的时候,我们也可以放在实体类中(这种实际用到也是非常多的)