Mybatis-Plus学习之删除操作
根据id删除
@Test
public void testDeleteById(){
    int result = userMapper.deleteById(5L);
	System.out.println(result);
}
批量删除
@Test
public void testDeleteBatchIds() {
    int result = userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));
	System.out.println(result);
}
简单条件删除
@Test
public void testDeleteByMap() {
	HashMap<String, Object> map = new HashMap<>();
	map.put("name", "Helen");
	map.put("age", 18);
    int result = userMapper.deleteByMap(map);
	System.out.println(result);
}
逻辑删除
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
 逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
逻辑删除的使用场景:
 可以进行数据恢复
 有关联数据,不便删除
在表中添加字段,设置为标志位,删除时修改标志位。
 
 实体类user添加属性,添加注解
	@TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;
在handler中新增deleted属性初始值。
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);//根据名称设置属性值。
        this.setFieldValByName("updateTime",new Date(),metaObject);
        this.setFieldValByName("version",1,metaObject);
        this.setFieldValByName("deleted",0,metaObject);
    }
测试
 
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3e33b52e] was not registered for synchronization because synchronization is not active
2022-03-22 21:56:02.968  INFO 21460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-03-22 21:56:03.272  INFO 21460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@417621837 wrapping com.mysql.cj.jdbc.ConnectionImpl@f245bdd] will not be managed by Spring
==>  Preparing: UPDATE user SET deleted=1 WHERE id=? AND deleted=0
==> Parameters: 1506268104781373442(Long)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3e33b52e]
1











