mybatis批量新增数据;批量修改数据;存在则更新,不存在则插入
时间: 2023-11-02 15:12:39 浏览: 197
mybatis学习之路mysql批量新增数据的方法
MyBatis提供了批量操作数据的方式,可以通过Mapper接口中的方法将多条数据一次性插入或更新到数据库中。
1. 批量新增数据
假设我们有一个List<User> userList,需要将其中的所有用户插入到数据库中,可以使用MyBatis的批量操作方式:
```
<insert id="batchInsertUser" parameterType="java.util.List">
insert into user (id, name, age) values
<foreach collection="list" item="user" separator=",">
(#{user.id}, #{user.name}, #{user.age})
</foreach>
</insert>
```
其中,parameterType指定了传入的参数类型为List,使用foreach标签遍历list中的所有User对象,将每个对象的属性值插入到SQL语句中。
在Java代码中,可以调用Mapper接口中的方法批量插入数据:
```
List<User> userList = new ArrayList<>();
// 添加用户数据到userList中
userMapper.batchInsertUser(userList);
```
2. 批量修改数据
假设我们有一个List<User> userList,需要将其中的所有用户的年龄修改为30,可以使用MyBatis的批量操作方式:
```
<update id="batchUpdateUser" parameterType="java.util.List">
<foreach collection="list" item="user" separator=";">
update user set age = #{user.age} where id = #{user.id}
</foreach>
</update>
```
其中,parameterType指定了传入的参数类型为List,使用foreach标签遍历list中的所有User对象,将每个对象的id和age属性值插入到SQL语句中。
在Java代码中,可以调用Mapper接口中的方法批量更新数据:
```
List<User> userList = new ArrayList<>();
// 添加用户数据到userList中
userMapper.batchUpdateUser(userList);
```
3. 存在则更新,不存在则插入
假设我们有一个List<User> userList,需要将其中的所有用户插入到数据库中,如果数据库中已经存在该用户,则更新该用户的信息,可以使用MyBatis的批量操作方式:
```
<insert id="batchInsertOrUpdateUser" parameterType="java.util.List">
<foreach collection="list" item="user" separator=";">
insert into user (id, name, age) values (#{user.id}, #{user.name}, #{user.age})
on duplicate key update name = values(name), age = values(age)
</foreach>
</insert>
```
其中,如果数据库中已经存在该用户,则使用on duplicate key update语句更新该用户的信息。
在Java代码中,可以调用Mapper接口中的方法批量插入或更新数据:
```
List<User> userList = new ArrayList<>();
// 添加用户数据到userList中
userMapper.batchInsertOrUpdateUser(userList);
```
阅读全文