mybatis批量插入

本文介绍了如何在大数据场景下,使用MyBatis的批量插入功能,通过Controller接收List和Map参数,并在DAO层利用@Param别名和XML映射进行高效操作。重点讲解了List方式的@Param绑定和Map结构的适配技巧。
摘要由CSDN通过智能技术生成

背景:

丢掉单条插入,大数据选批量插入。

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>
注意:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值