Mybatis-plus扩展功能

  1. 在idea中下载插件MybatisX

  2. 点击菜单栏HELP右边的Other,配置好相应的数据库,测试连接,最后编写生成什么,以及生成在哪的代码

  3. 静态工具的使用

    • 需求

    • service实现类的写法:出现service相互调用的时候,建议使用Db静态工具类,避免循环依赖

  4. 逻辑删除:基于代码逻辑模拟删除效果,但并不会真正删除数据;调用的代码不用改动,只要进行了设置,会相应修改底层sql代码

    • 数据库中给的表要有一个逻辑删除对应的字段,布尔型或者Integer型

    • 在yml文件配置

    mybatis-plus:
      global-config:
        db-config:
          logic-delete-field: isDelete #默认deleted
          logic-delete-value: 1
          logic-not-delete-value: 0
    
  5. 枚举处理器:在开发中,数据库表中的字段很常见会使用枚举类型来表示一些固定的取值范围。为了方便在MyBatis-Plus中处理这些枚举类型的映射,MyBatis-Plus提供了专门的枚举处理器。

    • 举例说明:user表中有一个字段是role,角色类型用枚举来表示
    CREATE TABLE `user` (
      `id` INT(11) PRIMARY KEY,
      `name` VARCHAR(255),
      `role` INT(10)
    );
    
    • 枚举类表示用户的角色
    @Getter
    public enum RoleEnum {
        USER(1,"普通用户"),
        ADMIN(2,"管理员");
    
        @JsonValue //声明该字段是要返回到数据库的值
        private String description;
        @EnumValue // 声明该字段需要枚举处理器进行映射
        private Integer value;
    
        RoleEnum(String description) {
            this.description = description;
            this.value = value;
        }
    
        public String getDescription() {
            return description;
        }
        public int getValue() {
            return value;
        }
    }
    
    • User类中的role需要改成枚举类型
    @Data
    public class User {
        private Integer id;
        private String name;
        private RoleEnum role;
    }
    
    • 开启配置
    mybatis-plus:
      configuration:
        # 修改默认枚举处理类
        default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
    
  6. Json 处理器:在现代应用开发中,经常会使用 JSON 格式存储和传输数据。为了便捷地处理数据库中的 JSON 字段,MyBatis-Plus 提供了强大的 JSON 处理器。

    • 若你的表中数据有JSON格式类型的字段,这时候就需要JSON 处理器,有多种Json处理器,可以自己选择,举例用fastjson,若用Jackson的就不用单独导包了

    • 添加依赖

    <dependencies>
        <!-- 其他依赖 -->
        <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
       </dependencies
    
    • 数据库商品表中data字段的类型是JSON
    CREATE TABLE `product` (
      `id` INT(11) PRIMARY KEY,
      `name` VARCHAR(255),
      `data` JSON
    );
    
    • 实体类(这里是 Product 类)中定义一个字段来存储 JSON 数据
    @Data
    public class Product {
        private Integer id;
        private String name;
        private JSONObject data; // 使用 JSONObject 来存储 JSON 数据
    }
    
posted @ 2024-05-25 11:07  Hanyta  阅读(26)  评论(0编辑  收藏  举报