【Mybatis Plus】使用删除时间进行软删除的简单实现

使用删除时间进行软删除的简单实现

最近在做一个 Java 的项目,这个项目使用了 Mybatis Plus 来进行数据库操作,Mybatis Plus 的软删除默认使用 0,1 来进行标识。由此造成了用户表中软删除和电话号码的唯一约束不能共存的问题,具体可以见这篇博客简而言之,我需要使用删除时间是否为空来进行软删除

在百度上查阅了一些资料,很少有人有这个需求,有一些博客写的方法也不太可行,官方代码库的 issues 里的一些介绍也还是没有很好的讲清楚方法,在看了几篇博客 + 官方文档 + 尝试了一番后,找到了简单的解决方案。

由于我们的项目已经在线上运行了,所以希望以前的表继续使用原来的软删除逻辑,新表使用时间是否为空进行软删除。

具体演示

首先创一个表,用 deleted_at 来标识删除与否

-- 测试表建表函数
-- 表结构
CREATE TABLE test
(
    `id`                     BIGINT       NOT NULL AUTO_INCREMENT,
    `remark`                 TEXT COMMENT '备注',
    `deleted_at`             TIMESTAMP    NULL     DEFAULT NULL COMMENT '删除标志位,NULL-未删除,时间-已删除',
    PRIMARY KEY (`id`) USING BTREE
) CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_unicode_ci COMMENT '测试表';

然后创建实体类,在 @TableLogic 后面再加一个 (value = "null", delval = "now()")。这样就 ok 啦,这样修改只有这张表会使用这个逻辑来进行软删除,别的表依旧沿用别的软删除逻辑(前提:不是使用修改配置文件,全局定义软删除方式

// 实体类

@TableName(value ="test")
@Data
public class Test implements Serializable {
	...
	
    /**
     * 删除标志位
     */
    @TableLogic(value = "null", delval = "now()")
    @JsonIgnore
    private Date deletedAt;

    ...
}

以上就是本文的全部内容,感谢观看!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Mybatis PlusMybatis 的一个增强工具包,提供了许多实用的功能,例如自动分页、自动填充、逻辑删除、多租户等。下面简单介绍一下使用 Mybatis Plus 的步骤: 1. 引入 Mybatis Plus 的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> ``` 2. 配置数据源,可以使用 Mybatis Plus 提供的 `MybatisPlusInterceptor` 实现自动分页: ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(); sqlSessionFactory.setDataSource(dataSource); // 添加分页插件 MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); sqlSessionFactory.setPlugins(interceptor); return sqlSessionFactory.getObject(); } } ``` 3. 创建实体类和对应的 Mapper 接口: ```java @Data @AllArgsConstructor @NoArgsConstructor @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; } public interface UserMapper extends BaseMapper<User> { } ``` 4. 使用 Mybatis Plus 提供的通用方法进行 CRUD 操作: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> list() { return userMapper.selectList(null); } public User getById(Long id) { return userMapper.selectById(id); } public boolean save(User user) { return userMapper.insert(user) > 0; } public boolean updateById(User user) { return userMapper.updateById(user) > 0; } public boolean removeById(Long id) { return userMapper.deleteById(id) > 0; } } ``` 以上就是使用 Mybatis Plus简单步骤,更多详细的使用方法可以参考官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值