MyBatisPlus 的更新方法
public class MyBatisPlusUpdateTest{
@Autowired
private UserMapper userMapper;
//根据updateById方法进行更新
@Test
public void updateByIds(){
User user = new User();
user.setId(10001);
user.setAge(23);
user.setName("龙在天涯");
user.setEmail("37635636756@163.com");
Integer rows = userMapper.updateById(user);
System.out.println("影响记录数:" + rows);
}
@Test
public void updateByWrapper(){
UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>();
updateWrapper.eq("name", "张无忌").eq("age", 28); //where 表达式
// UPDATE user SET age = 25 , email = 'uyddhjdhgg@163.com' WHERE name = '张无忌' and age = 28
User user = new User();
user.setEmail("uyddhjdhgg@163.com");
user.setAge(25);
Integer rows = userMapper.update(user, updateWrapper);
System.out.println("影响记录数:" + rows);
}
@Test
public void updateByWrapper1(){
User whereUser = new User();
whereUser.setId(10002);
UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>(whereUser); //将实体传递给条件构造器
updateWrapper.eq("name", "张无忌").eq("age", 28); //where 表达式
// UPDATE user SET age = 25 , email = 'uyddhjdhgg@163.com' WHERE name = '张无忌' and age = 28
User user = new User();
user.setEmail("uyddhjdhgg@163.com");
user.setAge(25);
Integer rows = userMapper.update(user, updateWrapper);
System.out.println("影响记录数:" + rows);
}
@Test
public void updateByWrapper2(){
UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>();
updateWrapper.eq("name", "张无忌").eq("age", 28).set("age", 30); //UPDATE user SET age = 30 WHERE name = '张无忌' and age 28
Integer rows = userMapper.update(null, updateWrapper); //省略实体,设置为null
System.out.println("影响记录数:" + rows);
}
@Test
public void updateByWrapperLambda(){
LambdaUpdateWrapper<User> lambdaUpdate = Wrappers.<User>lambdaUpdate();
//UPDATE user SET age = 31 , email = 'uywyeiu@126.com' WHERE name = '张无忌' and age = 30
lambdaUpdate.eq(User::getName, "张无忌").eq(User::getAge, 30)
.set(User::getAge, 31).set(User::getEmail, "uywyeiu@126.com");
Integer rows = userMapper.update(null, lambdaUpdate);
System.out.println("影响记录数:" + rows);
}
@Test
public void updateByWrapperLambdaChain(){
boolean updateBool = new LambdaUpdateChainWrapper<User>(userMapper)
.eq(User::getName, "张无忌").eq(User::getAge, 31)
.set(User::getAge, 34).set(User::getEmail, "434444322@qq.com")
.update();
System.out.println(updateBool); //成功:true 失败:false
}
}
更新(Update)
1. 根据id更新,根据实体类主键属性进行更新,其他属性有值就更新。
2. 以条件构造器作为参数更新方法。
updateWrappet参数会出现在where中,user参数出现在set中
注意这样写条件会重复出现,导致报错:
3.条件构造器中set方法使用:
更新字段的数量少:
lambda表达式的方式更新:
通过构造器链进行直接更新:
myBatis Mapper更新(少量字段)
更新的写法同样有五种:
传入更新后的对象实例,和条件Wrapper
传入空对象,通过在条件Wrapper后加入set方法
构建Wrapper时传入条件实体对象
通过匿名表达式,构造Wrapper
通过匿名表达式链式调用(参数为mapper)
更新,用lambdaChain
更新,用lambda
更新,用set
mybatis-plus更新
1、根据id更新
使用场景:根据实体类主键属性进行更新,其他属性有值就更新。
使用方法:如下
2、以条件构造器作为参数进行更新
使用场景:更新条件为其他时。
使用方法:如下
条件构造器传入实体时的使用(和QueryWrapper类似),它会将实体属性作为更新的条件。
3、条件构造器中set方法使用
如果更新少量字段可使用如下方式
lambda方式更新
通过构造器链进行直接更新
CRUD - 更新
updateWrapperLambdaChain
updateWrapperLambda
updateWrapper3
updateWrapper2
updateWrapper
updateById
默认实体中不为null的字段会出现在set中
这里是更新name equals "李艺伟" 并且 age equals 28 的user数据
更新的数据为set的 email 和 set的 age
通用mapper的操作中update(操作对象,wrapper条件)
根据id更新数据
通用mapper的updateById是直接只根据id相同的进行update操作
tableFiled condition
UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>();
updateWrapper.eq("name","李艺伟").eq("age",29).set("age",30);
int rows = userMapper.update(null,updateWrapper);