0
点赞
收藏
分享

微信扫一扫

Mybatis-Plus学习之删除操作

腾讯优测 2022-03-22 阅读 32
后端

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

在这里插入图片描述

举报

相关推荐

0 条评论