使用Mybatis-plus最佳实践
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Mybatis-plus最佳实践相关的知识,希望对你有一定的参考价值。
参考技术A mybatis-plus是对mybatis的增强,不是替代。从某种程度上来说,可以完全替代dao和mapper使用LambdaQueryWrapper可以避免实体和数据对应关系写错,推荐使用。
#yyds干货盘点#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值写错了。所以,能复制的尽量别用手敲了。
以上是关于使用Mybatis-plus最佳实践的主要内容,如果未能解决你的问题,请参考以下文章