mybatis plus 批量保存 List<Map
时间: 2024-02-04 09:39:48 浏览: 44
<Mybatis-Plus>提供了一个方法`insertBatchSomeColumn(List<T> entityList)`,可以实现批量保存实体类列表,同时支持批量保存时指定需要插入的字段。
但是,如果要保存的数据是`List<Map<String, Object>>`类型的,需要做一些额外的处理:
1. 自定义一个Mapper接口,定义一个方法`batchInsert(List<Map<String, Object>> list)`。
2. 在Mapper.xml文件中实现`batchInsert`方法,使用Mybatis-Plus提供的`insertBatchSomeColumn`方法进行批量保存。
下面是示例代码:
Mybatis-Plus版本:3.4.1
Java代码:
```java
public interface CustomMapper {
void batchInsert(List<Map<String, Object>> list);
}
```
Mapper.xml代码:
```xml
<mapper namespace="com.example.CustomMapper">
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="list[0].keySet()" item="column">
<if test="column != null">
${column},
</if>
</foreach>
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="item.entrySet()" item="entry">
<if test="entry.value != null">
#{entry.value},
</if>
</foreach>
</trim>
</foreach>
</insert>
</mapper>
```
使用示例:
```java
@Autowired
private CustomMapper customMapper;
@Test
void testBatchInsert() {
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("column1", "value1");
map1.put("column2", 2);
Map<String, Object> map2 = new HashMap<>();
map2.put("column1", "value3");
map2.put("column2", 4);
list.add(map1);
list.add(map2);
customMapper.batchInsert(list);
}
```
注意事项:
1. `list`中每个元素必须包含相同的键值对,否则会保存失败。
2. `list`中的键值对的顺序可以不同,因为在Mapper.xml文件中会根据键名动态生成SQL语句。
3. 对于需要自增的主键,可以使用MySQL的`INSERT INTO...ON DUPLICATE KEY UPDATE`语句实现批量保存和更新。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)