三、MybatisPlus扩展功能

19 阅读2分钟

一,代码生成器

  1. 下载插件 image
  2. 配置数据库信息 image image
  3. 代码生成 image

二,静态工具

静态根据包含了其他的CRUD所有操作,之所以引入静态工具是为了防止Service之间相互调用导致的依赖循环。 image

三,逻辑删除

逻辑删除是一种优雅的数据管理策略,它通过在数据库中标记记录为“已删除”而非物理删除,来保留数据的历史痕迹,同时确保查询结果的整洁性。MyBatis-Plus 提供了便捷的逻辑删除支持,使得这一策略的实施变得简单高效。

使用方法:

  1. application.yml 中配置 MyBatis-Plus 的全局逻辑删除属性:
    mybatis-plus:
    global-config:
        db-config:
        logic-delete-field: flag # 全局逻辑删除字段名
        logic-delete-value: 2 # 逻辑已删除值
        logic-not-delete-value: 0 # 逻辑未删除值
    
  2. 在实体类中,对应数据库表的逻辑删除字段上添加 @TableLogic 注解
    import com.baomidou.mybatisplus.annotation.TableLogic;
    public class User {
        // 其他字段...
    
        @TableLogic
        private Integer flag;
    }
    
  3. 我们需要在数据库表这个字段设置默认值,要不然插入操作会导致这个字段为null的

四,枚举处理器

image Java数据类型和数据库类型之间的转换底层采用的是Mybatis的TypeHandler类,他自带一个EnumOrdinalTypeHandler枚举类型处理器,但是写的不好,MybatisPlus在基础上扩展了MybatisEnumTypeHandler来实现枚举处理器 image


使用方法

  1. 在枚举类中标识要进行转换的字段

    @Getter
    @AllArgsConstructor
    public enum GradeEnum {
        PRIMARY(1, "小学"),
        SECONDARY(2, "中学"),
        HIGH(3, "高中");
    
        @EnumValue // 标记数据库存的值是code
        private final int code;
        // 其他属性...
    }
    
  2. 在application配置文件中配置全局枚举处理器

    mybatis-plus:
    configuration:
        default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
    
  3. 枚举默认以英文名返回,如果想返回value,如下处理

    public enum GradeEnum {
        PRIMARY(1, "小学"),
        SECONDORY(2, "中学"),
        HIGH(3, "高中");
    
        GradeEnum(int code, String descp) {
            this.code = code;
            this.descp = descp;
        }
    
        @EnumValue
        @JsonValue // 标记响应json值
        private final int code;
    }
    

五,JSON处理器

在数据库中有JSON数据类型存储了info信息,我们一般用String接受,也可以通过MybatisPlus的JSON处理器,通过UserInfo类来接受他。

使用方法如下

  1. 在类上加上 @TableName(value="user",autoResultMap=true)
  2. 在对应的字段加上@TableField=JacksonTypeHandler.class) image