MybatisPlus

  1. Mybatis-plus:Mybatis增强工具,只做增强,不作改变,简化开发,提高效率。

  2. Mybatis-plus特点:

    • 无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性

    • 依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring

    • 损耗小:启动即会自动注入基本CRUD,性能基本无损耗,直接面向对象操作

    • 通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

    • 多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题

    • 支持ActiveRecord:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作

    • 支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎

    • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

    • 内置分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于写基本List查询

    • 内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询

    • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作

  3. MyBatis-Plus快速入门

    • 引入依赖
     <!-- Mybatis-Plus启动器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
    
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    
    • 实体类的编写(要让实体类与数据库表一一对应)
    @Data
    @EqualsAndHashCode(callSuper = false)
    @TableName("user")//若数据库表名与类名不一致需要指定
    public class User {
    
        /**
         * 主键,自增,如果不管则为雪花算法
         */
        @TableId(value = "id",type = IdType.AUTO)
        private Long id;
    
        /**
         * 姓名
         */
        @TableField(value = "name", condition = SqlCondition.LIKE)
        private String name;
    
        /**
         * 年龄
         */
        @TableField(condition = "%s&lt;#{%s}")
        private Integer age;
    
        /**
         * 邮箱
         */
        private String email;
    
        /**
         * 直属上级id
         */
        private Long managerId;
    
        /**
         * 创建时间
         */
        private Date createTime;
    
        /*
         * 备注(不与数据库字段对应,表中没有这个字段) # transient 不参与序列化
         */
        @TableField(exist = false)
        private String remark;
    
    }
    
    • 继承接口
    public interface UserMapper extends BaseMapper<User> {
    }
    
    • mybatis plus相关配置
    # mybatis-plus相关配置
    mybatis-plus:
      # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
      mapper-locations: classpath:mapper/*.xml
      # 以下配置均有默认值,可以不设置
      global-config:
        db-config:
          #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
          id-type: auto
          #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
          field-strategy: NOT_EMPTY
          #数据库类型
          db-type: MYSQL
      configuration:
        # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
        map-underscore-to-camel-case: true
        # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
        call-setters-on-nulls: true
        # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
posted @ 2024-05-24 15:15  Hanyta  阅读(11)  评论(0编辑  收藏  举报