目录
前言:
记录一下, mybatis-plus 除了主键去修改数据/或者查询数据 使用其他属性去操作的场景
update
- 可以使用UpdateWrapper或LambdaUpdateWrapper构建更新条件,然后将条件传入UpdateChainWrapper的update方法中。
- 例如,假设有一个实体类User,有id、name和age三个属性,需要根据name和age的值来更新记录,可以使用以下代码实现:
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "张三").eq("age", 20);
UpdateChainWrapper<User> updateChainWrapper = new UpdateChainWrapper<>(userMapper);
updateChainWrapper.update().set("name", "李四").set("age", 25).apply(updateWrapper);
描述:UpdateWrapper用于构建更新条件,eq方法用于设置属性值与指定值相等的条件。UpdateChainWrapper则用于更新操作,update方法返回UpdateWrapper,然后通过set方法设置需要更新的属性值,apply方法将更新条件传入进行更新操作。
update2
- 除了使用UpdateWrapper或LambdaUpdateWrapper构建更新条件,还可以使用EntityWrapper或LambdaQueryWrapper构建查询条件,然后将查询条件转化为更新条件,再传入UpdateChainWrapper的update方法中。
- 例如,假设有一个实体类User,有id、name和age三个属性,需要根据name和age的值来更新记录,可以使用以下代码实现:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").eq(User::getAge, 20);
User updateUser = new User();
updateUser.setName("李四");
updateUser.setAge(25);
UpdateChainWrapper<User> updateChainWrapper = new UpdateChainWrapper<>(userMapper);
updateChainWrapper.update(updateUser, Wrappers.lambdaUpdate(User.class).apply(queryWrapper));
描述: LambdaQueryWrapper用于构建查询条件,eq方法用于设置属性值与指定值相等的条件。updateUser表示要更新的属性值,Wrappers.lambdaUpdate(User.class)用于将Lambda表达式转化为UpdateWrapper,apply方法将查询条件传入进行更新操作。
查询条数:
- this.getOne(queryWrapper, true) 方法是 MyBatis-Plus 提供的查询方法,用于查询符合条件的一条记录。
- 其中,queryWrapper表示查询条件,true表示查询出来的结果集只有一条记录。如果设置为false,则表示查询出来的结果集可能有多条记录,返回结果为第一条记录,如果查询结果为空,则返回null。
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").eq(User::getAge, 20);
User user = this.getOne(queryWrapper, true);
描述: LambdaQueryWrapper用于构建查询条件,eq方法用于设置属性值与指定值相等的条件,this指代当前的Service类,getOne表示查询符合条件的一条记录,queryWrapper表示查询条件,true表示查询出来的结果集只有一条记录。
如果查询结果为空,则返回null,如果查询结果不为空,则返回符合条件的第一条记录。