返回

解密MyBatis-Plus 3.5.0自动填充与逻辑删除的秘密武器**

后端

当然,我将按照您的需求,为您撰写一篇关于最新版Mybatis-plus3.5.0全面攻略(二)自动填充和逻辑删除的实际方案的文章。

关键词:MyBatis-Plus、自动填充、逻辑删除、JPA、Spring Data

MyBatis-Plus 3.5.0重磅发布,新增自动填充和逻辑删除两大特性,为开发者带来更加强大的数据操作体验。本文将详细解析这两个特性的用法,并结合实际案例进行讲解,帮助您快速掌握MyBatis-Plus的进阶操作技巧,提升开发效率。

文章:

一、自动填充

自动填充功能允许我们在插入或更新记录时自动设置某些字段的值。这对于一些常见的字段,如创建时间、更新时间、创建者ID等非常有用。

在MyBatis-Plus中,我们可以通过在实体类中使用@TableField注解来实现自动填充。例如:

@TableField(fill = FieldFill.INSERT)
private Date createTime;

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

@TableField(fill = FieldFill.INSERT_UPDATE)
private Long createUserId;

这样,当我们在插入或更新记录时,MyBatis-Plus就会自动将这些字段的值设置为当前时间或当前登录用户的ID。

二、逻辑删除

逻辑删除功能允许我们在不物理删除记录的情况下将其标记为已删除。这对于一些需要保留历史数据的场景非常有用。

在MyBatis-Plus中,我们可以通过在实体类中使用@TableLogic注解来实现逻辑删除。例如:

@TableLogic
private Integer deleted;

这样,当我们在插入或更新记录时,MyBatis-Plus就会自动将deleted字段的值设置为0。当我们想要逻辑删除记录时,只需要将deleted字段的值设置为1即可。

三、实际案例

下面是一个使用MyBatis-Plus自动填充和逻辑删除功能的实际案例。

// 创建实体类
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

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

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long createUserId;

    @TableLogic
    private Integer deleted;

    // 省略其他字段和方法
}

// 插入记录
User user = new User();
user.setName("张三");
user.setAge(20);
userService.save(user);

// 查询记录
List<User> users = userService.list();

// 逻辑删除记录
userService.removeById(user.getId());

// 查询已逻辑删除的记录
List<User> deletedUsers = userService.listDeleted();

在这个案例中,我们创建了一个User实体类,并使用@TableField和@TableLogic注解实现了自动填充和逻辑删除功能。然后,我们通过UserService类对User数据进行操作,包括插入记录、查询记录、逻辑删除记录和查询已逻辑删除的记录。

希望这篇关于MyBatis-Plus 3.5.0自动填充与逻辑删除的文章对您有所帮助。如果您还有其他问题,请随时留言。