MyBatis 用 foreach标签 与set标签 写一个update
时间: 2024-05-06 22:20:50 浏览: 160
使用MyBatis 动态update数据
假设有一个 User 表,其中有 id、name、age 三个字段,现在需要更新多个用户的信息,可以使用 MyBatis 的 foreach 标签和 set 标签来实现。
首先,需要定义一个 User 实体类:
```
public class User {
private int id;
private String name;
private int age;
// getter 和 setter 略
}
```
然后,编写 MyBatis 的 Mapper 文件,其中的 update 语句如下:
```
<update id="updateUsers">
<foreach collection="users" item="user" separator=";">
update User
<set>
<if test="user.name != null">name=#{user.name},</if>
<if test="user.age != null">age=#{user.age},</if>
</set>
where id=#{user.id}
</foreach>
</update>
```
这里使用了 foreach 标签来遍历多个用户,其中的 collection 属性指定了要遍历的集合,item 属性指定了集合中的元素变量名,separator 属性指定了每个元素之间的分隔符。
在 foreach 标签中,使用了 set 标签来设置更新的字段,其中的 if 标签用于判断字段是否为 null,如果不为 null,则将该字段添加到更新语句中。
最后,在 where 子句中使用了 id 字段来定位要更新的用户。
在 Java 代码中,可以通过创建一个包含多个 User 对象的 List 来调用该 Mapper 中的 updateUsers 方法,示例代码如下:
```
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setId(1);
user1.setName("Tom");
user1.setAge(20);
userList.add(user1);
User user2 = new User();
user2.setId(2);
user2.setName("Jerry");
user2.setAge(25);
userList.add(user2);
userMapper.updateUsers(userList);
```
阅读全文