mybatis-plus学习与实践(三)逻辑删除

在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,而mybatis-plus正好也提供了这一功能,在第一节中生成代码的时候,我们指定了逻辑删除字段的值,代码如下:

   StrategyConfig sc = new StrategyConfig();
        sc.setCapitalMode(false); //是否大写命名 默认false
        sc.setSkipView(true); //是否跳过试图 默认false
        sc.setNaming(NamingStrategy.underline_to_camel);// 表映射 驼峰命名
        sc.setColumnNaming(NamingStrategy.underline_to_camel); // 字段映射 驼峰
        sc.setEntityLombokModel(true); //默认false
        sc.setRestControllerStyle(true); // 默认false
        sc.setEntitySerialVersionUID(true); //默认true
        sc.setEntityColumnConstant(true); //默认false
        sc.setInclude("student"); //表名,用,隔开  需要生产
   //     sc.setExclude(""); //                 不需要生成  二选一
        sc.setEntityTableFieldAnnotationEnable(true); // 默认false 注释
        sc.setControllerMappingHyphenStyle(false); //默认false
        sc.setLogicDeleteFieldName("status"); // 逻辑删除字段名称
        generator.setStrategy(sc);

我们将status指定为逻辑删除字段,接下来我们看看生成的实体类,发现生成实体的时候在status上多了一个注解@TableLogic,这个注解就是把这个字段标识为逻辑删除。

	@Data
    @EqualsAndHashCode(callSuper = false)
    @Accessors(chain = true)
    @TableName("student")
    @ApiModel(value="Student对象", description="")
    public class Student implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    @TableField("age")
    private Integer age;

    @TableField("name")
    private String name;

    @TableField("tel")
    private String tel;

    @TableField("father_name")
    private String fatherName;

    @ApiModelProperty(value = "1:正常;-1:删除")
    @TableField("status")
    @TableLogic
    private Integer status;

然后再看看properties.yml文件

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: -1 #逻辑已删除值(默认为1)
      logic-not-delete-value: 1 #逻辑未删除值(默认为0

status=-1为删除,status=1为正常。接下来测试下效果

   @Test
   public void studentDelete(){

       int i = studentMapper.deleteById("1");
       System.out.println(i+"------------------/n");
   }

   @Test
   public void studentDeletes(){

       boolean b = studentService.removeById("1");
       System.out.println(b);
   }

测试后发现,在service和mapper中的删除方法都可以删除。

注:1、本文所用到的mybatis-plus版本是3.1.1。
2、在测试过程中发现自定义的逻辑删除值并没有生效,经过在官网上查找了一番,才发现是配置文件中的key值写错了。所以,能复制的尽量别用手敲了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java旅途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值