CustomerMapper.class
int addCustomerRecordBatch(@Param("list") List<Customer> list);
CustomerMapper.xml
<!--批量插入--> <insert id="addCustomerRecordBatch" parameterType="java.util.List" > insert into customer (source, seller_id, seller_name, update_time, children_name) values <trim suffixOverrides="," > <foreach collection="list" index="list" item="item" > <trim prefix=" (" suffix=")" suffixOverrides="," > #{item.source,jdbcType=VARCHAR}, #{item.sellerId,jdbcType=INTEGER}, #{item.sellerName,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.childrenName,jdbcType=VARCHAR}, #{item.childrenAge,jdbcType=DOUBLE} </trim>, </foreach> </trim> </insert>
注意:
@Param("list")的名字要和 mapper.xml 中的index的值对对应起来。
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map
关于foreach的具体例子在这里就先不举,以后有机会可以把每一种情况都举一个例子列出来。
{{ cmt.username }}
{{ cmt.content }}
{{ cmt.commentDate | formatDate('YYYY.MM.DD hh:mm') }}