MybatisPlus基础篇学习笔记(六)------更新及删除

原创:兜里的猫

本章目录

  • 更新操作
  • 删除操作

1. 更新操作

更新操作这里讲解两种方式:

a.根据id更新
b.以条件构造器作为参数的更新方法
  以及条件构造器中set方法的使用

image

上图为MP中BaseMapper接口提供的两种update方法。

a.根据id更新

使用updateById方法进行更新时,参数传入的是一个实体类,实体类中的id必须有,其他字段的set值为修改后的值。

从控制台打印的sql语句可以看出,实体类中的id为where条件,其他set的字段为需要修改的内容。

image

这里需要注意的是,会有下图出现的情况及在控制台打印的update sql语句中set字段会多出来state字段,实体类中并没有setState。

image

这是因为实体类对象中的state字段类型为int,Java会默认给int类型的值赋值为0,改为Integer类型就不会有影响,因为Integer类型会默认赋值为null,update语句不会set默认值为null的字段。

image

b.以条件构造器作为参数的更新方法

1.使用update方法更新时,传入的第一个参数为update sql语句中的set部分,传入的第二个参数为update sql语句中where条件部分,大家可与控制台打印的sql语句对照查看。

image

2.上图中使用updateWrapper构造器生成where条件时也可使用带实体类参数的updateWrapper构造器(与笔记四第5条中的QueryWrapper构造器的使用方法类似),效果与上图一样,代码如下:

//  where条件
Member whereMember = new Member();
member.setName("野九");
member.setState(1);
UpdateWrapper<Member> updateWrapper = new UpdateWrapper<>(whereMember);
c.条件构造器中set方法的使用

1.当实体类属性过多我们只需要更新少量字段时,可使用链式调用方法将where和set条件直接设置到UpdateWrapper构造器中,简化代码量,代码如下:

image

2.lambda的用法

使用lambda写法有效解决了防误写操作,前面一种方法需要我们手动写入字段名称,一旦写错了代码执行就会报错,而lambda就防止了这种情况的发生。

image

3.lambdaChain的用法

lambdaChain的用法与lambda类似,但它返回的是Boolean类型及是否操作成功,如果我们set里面的值与原来的值相同,则会返回false,只有set的值与原来的值不相同的时候才会返回true。

image

2. 删除操作

1.deleteById方法的使用,通过传入主键id进行数据删除。

image

2.deleteByMap方法的使用,通过map集合封装where查询条件,与上一个方法类似,只是where条件不同。

image

3.delete方法的使用,该方法是通过传入条件构造器进行删除操作,图中演示代码是用lambda方法进行操作的,通过创建LambdaQueryWrapper构造器并传入相应条件,最终带入到delete方法中。

image

==注:实际场景中的删除操作很谨慎,按实际需求有些删除只是逻辑删除操作并非物理删除,通过update修改表字段某个状态值可实现逻辑上的删除操作。==

评论

稻城 : 111
兜里的猫 : 是md
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×