首页 > 其他分享 >MybatisPlus

MybatisPlus

时间:2024-05-24 15:18:45浏览次数:18  
标签:插件 MybatisPlus private 主键 plus Mybatis ID

  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
    

标签:插件,MybatisPlus,private,主键,plus,Mybatis,ID
From: https://www.cnblogs.com/hytip/p/18211026

相关文章

  • mybatisPlus多数据源的使用&使用 lambdaQuery 导致多数据源失效
    依赖<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version></dependency>配置文件:spr......
  • mybatisplus 中查询的实体对应的表名是动态的解决方案
    开发中遇到需要查询一些表里的数据,这些数据按照一定的规则存放在不同的数据库表里,例如表名是table_name+月份 table_name_2024_05,table_name_2024_04这样,这些表的结构都相同。网上找了一些动态修改实体对应数据库表名的方法,操作相对复杂而且跟mybatisplus的版本有关。自己......
  • mybatisplus批量插入,分批的功能
    默认分批是1000一般也就改成100-1000之间示业务而定 比较简洁的一种方式如下原代码publicBooleaninsertTasks(List<TaskInfoEntity>tasks,StringagentId){//todo分批List<AgentTaskRelationEntity>entities=tasks.stream().map((......
  • MybatisPlus的一些补充
    packagecom.dao.repository;importcom.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importcom.dao.entity.MedicareCatalogLimitPriceInfoDO;importcom.dao.mapp......
  • mybatisplus乐观锁拦截器批量更新
    在MyBatis-Plus中使用乐观锁拦截器进行批量更新时,需要注意乐观锁的使用方式。乐观锁通常通过版本号机制实现,即在数据库表中增加一个版本号字段,每次更新时都会将版本号加一。下面是一个使用MyBatis-Plus的乐观锁拦截器处理批量更新的示例:首先,你需要自定义一个拦截器,实现Intercept......
  • mybatisplus乐观锁实现批量更新(在sql中实现)
    mybatisplus乐观锁实现批量更新在MyBatis-Plus中,乐观锁通常用于处理并发更新数据的问题。乐观锁实现批量更新时,可以使用版本号或者时间戳来保证数据的一致性。以下是使用乐观锁实现批量更新的示例代码:首先,在你的实体类中添加版本号字段:importcom.baomidou.mybatis......
  • mybatisplus乐观锁(单个任务)
    乐观锁:在关系数据库管理系统里,乐观并发控制(又名“乐观锁”,OptimisticConcurrencyControl,缩写“OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务......
  • MyBatisPlus乐观锁批量更新
    MyBatis-Plus提供了乐观锁插件 OptimisticLockerInterceptor 用于处理乐观锁,但是对于批量更新操作,乐观锁插件默认不会生效。要实现批量更新时的乐观锁控制,你需要自定义批量更新的逻辑。以下是一个自定义批量更新并使用乐观锁的示例:@ServicepublicclassYourService{......
  • SpringBoot+MyBatisPlus报错 Invalid value type for attribute 'factoryBeanObjectTy
    依赖版本org.springframework.boot:spring-boot-starter-web:3.2.5com.baomidou:mybatis-plus-boot-starter:3.5.5错误Invalidvaluetypeforattribute'factoryBeanObjectType'问题原因:这个问题是由于依赖传递导致,在MyBatis起步依赖中的myBatis-spring版本过低,导致程......
  • springboot+mybatisplus+dynicDatasource 从数据库表中查询数据源 动态添加
    1、pom依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/><!--lookuppa......