springboot----mybatisplus插件

Jeson      2022-05-07     314

关键词:

自动填充

注解实体字段

public class User {
  
  @TableField(fill = FieldFill.INSERT)
  private Date createTime;
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;
}

自定义实现类

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

  	//
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
        this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
        /* 上面选其一使用,下面的已过时(注意 strictInsertFill 有多个方法,详细查看源码) */
        //this.setFieldValByName("operator", "Jerry", metaObject);
        //this.setInsertFieldValByName("operator", "Jerry", metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
        this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
        /* 上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) */
        //this.setFieldValByName("operator", "Tom", metaObject);
        //this.setUpdateFieldValByName("operator", "Tom", metaObject);
    }
}

乐观锁插件

需要数据库表中加入 version 字段

注解实体字段 @Version

@Version
private Integer version

编写配置类

@Configuration
@MapperScan("")  // 可以写在这里或者启动类上面
public class MybatisPlusConfig {
  
  	// 乐观锁插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

分页插件

编写配置类

@Configuration
@MapperScan("")  // 可以写在这里或者启动类上面
public class MybatisPlusConfig {
  
  	// 分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 开启 count 的 join 优化,只针对部分 left join
        // paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }
}

分页查询

public Test{
  
    @Test
    void testPage() {
        // 创建 Page 对象,传入 当前页 和 每页记录数
   			Page<User> page = new Page<>(1,5);
        // 分页查询
      	userMapper.selectPage(page, null);
      	
        /**
         * 分页数据
         * page.getCurrent()  ---- 当前页
         * page.getPages()    ---- 总页数
         * page.getSize()     ---- 每页记录数
         * page.getTotal()    ---- 总记录数
         * page.getRecords()  ---- List 集合
         * page.hasNext()     ---- 下一页
         * page.hasPrevious() ---- 上一页
         */
    }
}

逻辑删除

需要在数据可添加 deleted 字段

注解实体字段 @TableLogic

@TableLogic
private Integer deleted;

编写配置类

3.1.1开始不再需要这一步

// 
@Configuration
public class MyBatisPlusConfiguration {

    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

性能分析插件

编写配置类

仅推荐开发使用,线上不推荐

@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {

    /**
     * SQL执行效率插件
     */
    @Bean
    @Profile({"dev","test"})// 设置 dev test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        // 使用默认配置
        // return new PerformanceInterceptor();
        
        // 自定义配置
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(100);// 单位:ms,超过则不执行
        performanceInterceptor.setFormat(true);  // SQL 格式化
        return performanceInterceptor;
    }
}

设置 dev 环境

可以针对各环境新建不同的配置文件application-dev.propertiesapplication-test.propertiesapplication-prod.properties

#环境设置:dev、test、prod
spring.profiles.active=dev

条件构造器

详情参考官方文档

springboot+postgresql+mybatisplus整合的一些坑

技术架构:springboot+mybatisplus+postgresql+gradle自定义TypeHnadler的使用自定义的TypeHandler主要是转换Jsonb和array等类型如果是使用mybatisplus的内置方法,则需要在实体字段加上@TableField注解,并且需要在类名上启动@TableName(autoResultMap=true)//autoRe... 查看详情

springboot+mybatisplus替换mybatis整合报错mappedstatementscollectiondoesnotcontainvalue

mybatisPlus完全兼容mybatis,一般来说直接替换掉就可以了,如果mybatis的数据源不能取消创建的话,就注掉mybatisplus的数据源//@ConfigurationpublicclassDataSourceConfig{//@Bean(name="dataSource2")//@ConfigurationProperties(prefix="spring.datasource 查看详情

springboot+mybatisplus实现多表联查分页

1配置分页插件publicclassMybatisPlusConfig{@BeanpublicPaginationInterceptorpaginationInterceptor(){returnnewPaginationInterceptor();}@BeanpublicPerformanceInterceptorperformanceInterceptor(){PerformanceInter 查看详情

springboot+mybatisplus,再加入shardingjdbc分表玩法

mybatisplus是mybatis的升级版,省去了繁琐的写xml环节,十分好用,具体文档可见http://mp.baomidou.com先创建一个springboot项目,导入关键jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s 查看详情

springboot+mybatisplus配置多数据源(代码片段)

springboot+mybatisplus配置多数据源1、引入依赖pom.xml文件引入dynamic-datasource-spring-boot-starter包<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-st 查看详情

springboot+mybatisplus+redis实现二级缓存

...候排除在lecttuce,然后再导入jedis的jar包就好了,1.2打开mybatisplus的二级缓存,为true的时候是开启的,false是关闭二级缓存1.3编写缓存类继承Cache类,实现Cache中的方法1.4早*.xml中加上<cache>标签,type写你所编写二级缓存类的路... 查看详情

springboot---mybatisplus自动生成代码(代码片段)

mybatisPlus自动生成代码mybatisPlus自动生成代码pom.xmlapplication.yml自动生成代码测试主启动类生成目录结果使用插件---版本要求:3.4.0版本以上pom.xml更新mybatisplus插件版本mp报错‘AutoGenerator()‘hasprivateaccessin‘com.baomidou.mybatisplus.gen... 查看详情

记录一次springboot+mybatisplus项目@autowired依赖注入失败的问题

org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname‘xxxServiceImpl‘:Unsatisfieddependencyexpressedthroughfield‘baseMapper‘;nestedexceptionisorg.springframework.b 查看详情

springboot项目配置模板(springboot+mybatisplus+druid)(代码片段)

...目录项目基本配置热加载开启数据库配置配置德鲁伊使用mybatisplus总结这个其实也只是我自己当前使用的一个模板,而且还没有整合Redis只是单纯地去整合了一下springboot和mybatisplus。这里的话我的数据库是使用的mysql5.7关于8.0... 查看详情

基于springboot+mybatisplus实现一套后台开发框架(代码片段)

项目介绍一款Java语言基于SpringBoot2.x、Layui、Thymeleaf、MybatisPlus、Shiro、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可用于快速搭建后台管理系统,本着简化开发、提升开发效率的... 查看详情

初学者必看,springboot+mybatisplus+swagger快速开发套路和总结

快速开发套路和总结​​一、模块开发​​​​快速开发套路​​​​建module​​​​改pom​​​​yml​​​​主启动​​​​二、业务类开发​​​​业务类(手动)​​​​建表写sql​​​​实体类、dao、service​​​​controlle... 查看详情

springboot+mybatisplus+clickhouse轻松实现增删改查,看了必懂。。

来源:blog.csdn.net/qq_15371293/article/details/117090780项目场景:ClickHouse操作基于Mybatis-puls源码扩展开发。解决ClickHouse的修改和删除SQL操作与Mysql不相同。基于Mybatis-puls:update、updateById、delete函数1、SqlMethodDi 查看详情

springboot+mybatisplus+sqlserver(2008sr)整合分页问题

参考技术A1.根据官网mybatis-plus的分页插件配置,就是一个拦截器,对分页数据的拦截。可是获取分页的时候默认加载了全部。而且配置了sql日志查询,查看到没有limit或其他分页相关的信息。解决方法:1>在分页插件那边要配置... 查看详情

springboot+mybatisplus对map中date格式转换的处理

在SpringBoot项目中,如何统一JSON格式化中的日期格式问题现在的关系型数据库例如PostgreSQL/MySQL,都已经对JSON类型提供相当丰富的功能,项目中对于不需要检索但是又需要结构化的存储,会在数据库中产生很多JSON类型的字段,与Jackson做... 查看详情

使用springboot+mybatisplus+echarts+mysql从0-1完成中国疫情地图可视化动态展示(代码片段)

...态展示,做的不好仅供参考前言:用到的技术栈:Springboot+MybatisPlus+Echarts+Mysql1创建数据库表和新增基本的数据方便大家使用我直接导出了.直接运行即可/*NavicatPremiumDataTransferSourceServer:本地库SourceServerTyp 查看详情

springboot+mybatisplus配置多数据源(代码片段)

springboot+mybatisplus配置多数据源1、引入依赖pom.xml文件引入dynamic-datasource-spring-boot-starter包<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.3.5</version></dep... 查看详情

springboot+mybatisplus+clickhouse轻松实现增删改查,看了必懂!(代码片段)

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇作者丨刘贤松handler原文链接:https://blog.csdn.net/qq_15371293/article/details/117090780/项目场景:ClickHouse操作基于Mybatis-puls源码扩展开发。解决Clic 查看详情

基于springboot+mybatisplus的外卖项目瑞吉外卖day3(代码片段)

...er;2.新建MyMetaObjectMapper类packagecom.study.common;importcom.baomidou.mybatisplus 查看详情