背景:
丢掉单条插入,大数据选批量插入。
PreparedStatement的方式在下一篇查询的时候会列举,对于优化系统至关重要。
1.传一个list
用@Param注解绑定别名
controller:
@PostMapping("batchInsertOfList")
public void batchInsertOfList(@RequestBody List<User> users){
userMapper.batchInsertOfList(users);
}
dao:
用mybatis的@Param绑定别名,xml里面collection写别名
void batchInsertOfList(@Param("users") List<User> users);
xml:
<insert id="batchInsertOfList">
insert into user (name,age)values
<foreach collection="users" item="item" separator="," close=";">
(#{item.name},#{item.age})
</foreach>
</insert>
注意:
用@Param注解绑定别名,xml中的collection的值要和@Param一致
不用@Param注解
controller同上面
dao:
void batchInsertOfList(List<User> users);
xml:
<insert id="batchInsertOfList">
insert into user (name,age)values
<foreach collection="list" item="item" separator="," close=";">
(#{item.name},#{item.age})
</foreach>
</insert>
注意:
不用@Param注解绑定,xml的collection的值默认传list固定写法
2.传一个map
controller:
@PostMapping("batchInsertOfMap")
public void batchInsertOfMap(@RequestBody Map<String,Object> map){
userMapper.batchInsertOfMap(map);
}
dao:
这里传入的map结构中的key必须是users类似于传list用@Param绑定的别名,map如下
{
"users": [
{
"name": "my",
"age": 20
}
]
}
void batchInsertOfMap(Map<String, Object> map);
xml:
<insert id="batchInsertOfMap">
insert into user (name,age)values
<foreach collection="users" item="item" separator="," close=";">
(#{item.name},#{item.age})
</foreach>
</insert>