MybatisPlus修改 删除操作

 

2、自动填充

项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。

我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作:

1)数据库表中添加自动填充字段

在User表中添加datetime类型的新的字段 create_time、update_time

2)实体类上添加属性以及注解

@Data
public class User {
    ...
        
    //注意使用小驼峰,框架会自动将下划线转为小驼峰
    //设置自动填充时机
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

3)实现元对象处理器接口

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    //使用mp实现添加的自动填充时,这个方法就会执行
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    //使用mp实现更新的自动填充时,这个方法就会执行
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

注意:不要忘记添加 @Component 注解

delete

1、根据id删除记录

//测试删除,物理删除
@Test
void testDelete() {
    int row = userMapper.deleteById(1L);
    System.out.println(row);
}

可以看到id为1的数据被删除

在这里插入图片描述2、批量删除

//批量物理删除
@Test
void testDeleteBatch(){
    int row = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4));
    System.out.println(row);
}

根据条件删除:

Map<String,Object> columnMap = new HashMap<>();
columnMap.put("gender",0);
columnMap.put("age",18);
emplopyeeDao.deleteByMap(columnMap);
 

3、逻辑删除

  • 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
  • 逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录

1)数据库中添加 deleted字段

ALTER TABLE `user` ADD COLUMN `deleted` boolean DEFAULT 0

在这里插入图片描述

2)实体类添加deleted 字段

    @TableLogic
    private Integer deleted;

3)application.properties 加入配置

此为默认值,如果你的默认值和mp默认的一样,该配置可无

mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4)在 MybatisPlusConfig 中注册 逻辑删除Bean

//逻辑删除插件
@Bean
public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
}

 

posted @ 2020-11-14 11:51  南巷北口  阅读(8711)  评论(0)    收藏  举报