Mybatis-plus删除方法使用
1.根据id删除
/**
* 根据id删除
* @param id
* @return sum
*/
@RequestMapping("deleteById")
@ResponseBody
public int deleteById(long id){
int sum = userMapper.deleteById(id);
return sum;
}
控制台打印sql = DELETE FROM user WHERE id=1260510510135164930
2.根据id批量删除
/**
* 根据id批量删除
* @param ids
* @return sum
*/
@RequestMapping("deleteBatchIds")
@ResponseBody
public int deleteBatchIds(@RequestParam List<String> ids){
int sum = userMapper.deleteBatchIds(ids);
return sum;
}
访问实例:http://localhost:8888/deleteBatchIds?ids=1260601936403582978,1260601938051944449,1260601939255709698
用list进行封装,多个id用逗号隔开即可
控制台打印sql = DELETE FROM user WHERE id IN (1260601936403582978,1260601938051944449 ,1260601939255709698)
3.根据条件查询删除
/**
* 简单的条件查询删除 map封装
*/
@RequestMapping("deleteCondition")
@ResponseBody
public int deleteCondition(User user){
HashMap<String,Object> map = new HashMap<>();
map.put("name",user.getName());
map.put("email",user.getEmail());
int sum = userMapper.deleteByMap(map);
return sum;
}
控制台打印sql = DELETE FROM user WHERE name = 宋子宪博客 AND email = blog@songzixian.com
4.逻辑删除
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
(1)数据库中添加 deleted字段
ALTER TABLE `表名` ADD COLUMN `deleted` boolean
(2)实体类添加deleted 字段
并加上@TableLogic
注解 和 @TableField(fill = FieldFill.INSERT)
注解 @TableLogic这个是做逻辑删除注解
@TableLogic//逻辑删除注解
@TableField(fill = FieldFill.INSERT) //自动填充,新增数据时生效
private Integer deleted;
(3)在MyMetaObjectHandler实现implements MetaObjectHandler类元对象处理器接口添加deleted
的insert
默认值
@Override
public void insertFill(MetaObject metaObject) {
......
//添加上这段代码,设置添加数据时deleted自动默认值为1
this.setFieldValByName("deleted", 0, metaObject);
}
(4)application.properties 加入配置
此为默认值,如果你的默认值和mp默认的一样,该配置可无
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
[collapse title="配置说明"]1代表正常数据 0代表已逻辑删除,添加了逻辑删除框架以后每次查询会带上where deleted = 0这个条件进行查询,无法查询出where deleted = 1的,可以使用mybatis自己写语句去查[/collapse]
测试方法,随便调用框架一种删除方法都可以进行测试
/**
* 通过id查询
* @param id
* @return
*/
@RequestMapping("selectById")
@ResponseBody
public User selectById(String id){
//通过id查询 mp自带
User user = userMapper.selectById(id);
return user;
}
查看数据库原来数据
查看控制台打印sql日志信息MyBatis Plus中查询操作也会自动添加逻辑删除字段的判断
然后测试删除方法:http://localhost:8888/deleteById?id=1260623237591724034
然后去数据库中查询删除的这条数据,就会发现改条数据的deleted = 0(正常)变为1(逻辑删除)
[button color="danger"]注意:如果使用框架的查询方法去查询这条数据(逻辑删除后)是无法查询出来的,需要通过mybatis自己写sql语句去查询[/button]
[button color="danger"]因为框架的查询语句默认会加上 where deleted = 0,只查deleted字段为0的数据[/button]
[button color="success"]注意:被删除数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作[/button]
[collapse title="附件说明"]逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。
如果你需要再查出来就不应使用逻辑删除,而是以一个状态去表示。
如: 员工离职,账号被锁定等都应该是一个状态字段,此种场景不应使用逻辑删除。
若确需查找删除数据,如老板需要查看历史所有数据的统计汇总信息,请单独手写sql。[/collapse]
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »