myBatis使用foreach批量插入数据

来源:互联网 发布:日语发音 知乎 编辑:程序博客网 时间:2024/05/18 21:42

官方文档中为foreach提供的示例是select的时候循环拼接IN语句,并没有对foreach中的每个属性进行解释,通过其他文章(http://my.oschina.net/linuxred/blog/38802)对各个属性有了部分了解,但是里面没有提到如果传入的参数不只是提供给foreach的时候该怎么做,我正好遇到这个需求,需要批量插入数据,其中product_id是每次都一样的,每次不同的数据为bookCity,通过测试后通过将数据封装成Map解决了问题:

Map<String, Object> parames = new HashMap<String, Object>();parames.put("product_id", product_id);//product_id是一个Stringparames.put("cityArr", cityArr);//cityArr是一个String[]sqlSession.insert("com.lantu.mybatis.product.addBookCity", parames);

XML:

<insert id="addBookCity" parameterType="HashMap">    INSERT INTO lt_product_city (product_id, city_id) VALUES    <foreach collection="cityArr" item="bookCity" index="index" separator=",">        (#{product_id}, #{bookCity})    </foreach></insert>
其中collection中需要配置为HashMap中的key
0 0