MyBatis+SpringBoot 批量插入 List<Map<String, Object>> 数据示例
假设我们有一个名为 User 的实体类,包含属性 id、name 和 age,我们需要将一个 List<Map<String, Object>> 对象插入到数据库中,可以按照以下步骤进行操作:
- 在 mapper 接口中定义插入方法:
public interface UserMapper {
void batchInsert(List<User> userList);
}
- 在 mapper.xml 文件中实现插入方法:
<insert id="batchInsert" parameterType="java.util.List">
insert into user(id, name, age)
values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
</insert>
- 在 Service 层中处理 List<Map<String, Object>> 数据,转化为 List
对象并调用 mapper 方法进行插入:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void batchInsert(List<Map<String, Object>> userList) {
List<User> users = new ArrayList<>();
for (Map<String, Object> userMap : userList) {
User user = new User();
user.setId((Integer) userMap.get('id'));
user.setName((String) userMap.get('name'));
user.setAge((Integer) userMap.get('age'));
users.add(user);
}
userMapper.batchInsert(users);
}
}
需要注意的是,插入的 List<Map<String, Object>> 对象中的 key 必须与实体类 User 的属性名相同,否则无法转化为 User 对象。
原文地址: https://www.cveoy.top/t/topic/od2V 著作权归作者所有。请勿转载和采集!