以下代码背景为实现购物车商品信息刷新功能,保持购物车内部的信息最新的接口Mapper。
mybatis的foreach标签经常用于遍历集合,构建in条件语句或者批量操作语句。
Mapper定义:
ItemsMapperCustom
import com.imooc.pojo.vo.SearchItemsVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface ItemsMapperCustom {
public List<ShopcartVO> queryItemsBySpecIds(@Param("paramsList") List specId);
xml定义:ItemsMapperCustom.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.imooc.mapper.ItemsMapperCustom">
<select id="queryItemsBySpecIds" parameterType="List" resultType="com.imooc.pojo.vo.ShopcartVO">
SELECT
t_items.id AS itemId,
t_items.item_name AS itemName,
t_items_img.url AS itemImgUrl,
t_items_spec.id AS specId,
t_items_spec.`name` AS specName,
t_items_spec.price_normal AS priceNormal,
t_items_spec.price_discount AS priceDiscount
FROM
items_spec t_items_spec
LEFT JOIN
items t_items
ON
t_items_spec.item_id = t_items.id
LEFT JOIN
items_img t_items_img
ON
t_items_img.item_id = t_items.id
WHERE
t_items_img.is_main = 1
AND
t_items_spec.id
IN
<foreach collection="paramsList" index="index" item = "specId" open="(" separator="," close=")">
#{specId}
</foreach>
</select>
</mapper>
保存评论到items_comment表
<select id="saveComments" parameterType="Map">
INSERT INTO
items_comments
(id,
user_id,
item_id,
item_name,
item_spec_id,
sepc_name,
comment_level,
content,
created_time,
updated_time
)
VALUES
<foreach collection="paramsMap.commentList" item="item" index="index" separator=",">
(
#{item.commentId},
#{paramsMap.userId},
#{item.itemId},
#{item.itemName},
#{item.itemSpecId},
#{item.itemSpecName},
#{item.commentLevel},
#{item.content},
now(),
now()
)
</foreach>
</select>
Impl相应代码
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveComments(String orderId, String userId, List<OrderItemsCommentBO> list) {
// 1、保存评论, item_comments
for (OrderItemsCommentBO oic : list) {
oic.setCommentId(sid.nextShort());
}
Map<String, Object> queryMap = new HashMap<>();
queryMap.put("userId", userId);
queryMap.put("commentList", list);
itemsCommentsMapperCustom.saveComments(queryMap);
}