springboot整合mybatis-plus分页自动填充功能(代码片段)

m0_47761892 m0_47761892     2023-03-30     158

关键词:

springboot 整合Mybatis-Plus分页、自动填充功能功能
此次分页、自动填充功能的实现是在Spring Boot整合 druid、Mybatis-plus实现的基础上完成的,包括数据源配置、各种依赖添加、mapper和service的实现。不在重复记录。
Java开发手册要求数据表必须要有三个字段:id字段:自动生成;createtime:记录添加的时间;modifyTime:记录修改的时间。因此可以使用自动填充功能实现后两个字段生成。
1 创建分页插件配置类
在包dzxx.crud.config中创建分页插件配置类:MybatisPlusConfig,并修改数据库的类型。然后添加@configuration和@mapperScan注解,

package dzxx.crud.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
//扫描路径为StuMapper文件的路径
@MapperScan("dzxx.crud.repository")
public class MybatisPlusConfig 
    @Bean
    public  MybatisPlusInterceptor mybatisPlusInterceptor()
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    

2 创建分页实体类。
在dzxx.crud.pojo包中创建分页实体类StuVo,存储分页的结果。

package dzxx.crud.pojo;
import lombok.Data;
import java.util.List;
//分页实体类,
@Data
public class StuVo 
    private Integer current;    //当前页
    private Integer size;       //每一页的数量
    private Long total;         //总数
    private List<Stu> stuList;  //每一页的内容

    public StuVo(Integer current, Integer size, Long total, List<Stu> stuList) 
        this.current = current;
        this.size = size;
        this.total = total;
        this.stuList = stuList;
    
    public StuVo() 
    

3 修改Stu实体类的。给createtime和modifytime属性的添加@TableField注解。

package dzxx.crud.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;

@Data
@TableName(value = "stu")
public class Stu 
   .。。。。。。
    //mybatis-plus自动填充功能
   //1,使用注解填充字段生成策略,告知Mybatis-Plus需要预留注入SQL字段
    //2.自定义类component-》MyMetaObjectHandler实现接口MetaObjectHandler中的insertFill和updateFill方法
    //创建时间:希望在添加数据的时候填充:当前时间
    @TableField( fill=FieldFill.INSERT)
    private Date currenttime;
    //修改时间:希望在添加、修改数据的时候填充:当前时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date modifytime;
    。。。。。

4 创建自定义类component-》MyMetaObjectHandler实现接口MetaObjectHandler中的insertFill和updateFill方法

package dzxx.crud.component;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;
// 填充处理器MyMetaObjectHandler在 Spring Boot 中需要声明@Component或@Bean注入
@Component
public class MyMetaObjectHandler implements MetaObjectHandler 
    @Override
    public void insertFill(MetaObject metaObject) 
        //插入时:创建时间和修改时间
        this.setFieldValByName("currenttime", new Date(), metaObject);
        this.setFieldValByName("modifytime", new Date(), metaObject);
    
    @Override
    public void updateFill(MetaObject metaObject) 
        //修改时:修改时间
        this.setFieldValByName("modifytime", new Date(), metaObject);
    


5 编写测试方法。服务层调用分页方法即可实现分页。

package dzxx.crud;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import dzxx.crud.pojo.Stu;
import dzxx.crud.pojo.StuVo;
import dzxx.crud.service.StuService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class CrudApplicationTests 
    @Autowired(required = false)
  private StuService stuService;
    @Test
    void pagewithIservice()
        int current=1;
        int size=2;
        IPage<Stu> iPage=new Page<>(current, size);
        stuService.page(iPage);

        StuVo stuVo=new StuVo();
        stuVo.setCurrent(current);
        System.out.println(iPage.getRecords());
        System.out.println("总"+iPage.getTotal());
        System.out.println("总页数"+iPage.getPages());
     
     @Test
     //添加记录,会自动生成添加时间和修改时间
    void save()
        Stu stu=new Stu(null,"jackson","2411",22);
        stuService.save(stu);
        System.out.println(stu);
      

4 测试结果如图所示

-----------------------------------------------------------------------~~~~ ----------------------

如何整合springboot+mybatis-plus(系列一)(代码片段)

如何整合springboot+mybatis-plus(系列一)背景整合springboot+mybatis-plus,其实就是整合springboot+mybatis+mybatis-plus,本来mybatis-plus就能自动包含mybatis步骤非常简单,用IDEA新建项目,选择Sprin 查看详情

springboot整合mybatis-plus分页自动填充功能(代码片段)

springboot整合Mybatis-Plus分页、自动填充功能功能此次分页、自动填充功能的实现是在SpringBoot整合druid、Mybatis-plus实现的基础上完成的,包括数据源配置、各种依赖添加、mapper和service的实现。不在重复记录。Java开发手册要求数... 查看详情

springboot整合mybatis-plus

springboot整合mybatis-plus简介mybatis增强工具包,简化CRUD操作。文档http://mp.baomidou.comhttp://mybatis.plus优点|Advantages无侵入:Mybatis-Plus在Mybatis的基础上进行扩展,只做增强不做改变,引入Mybatis-Plus不会对您现有的Mybatis构架产生任何影响... 查看详情

springboot整合mybatis-plus实现分页查询(建议收藏)(代码片段)

一、前言    最近学习了SpringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现。现在我将具体的实现流程分享一下。二、手动实现分页查询        先复习一下,SQL中的limit关键字,下面一... 查看详情

springboot整合mybatis-plus+durid数据库连接池(代码片段)

...及项目搭建springboot整合之版本号统一管理  springboot整合mybatis-plus+durid数据库连接池springboot整合swaggerspringboot整合mybatis代码快速生成springboot整合之统一结果返回springboot整合之统一异常处理springboot整合之Validated参数校验 sprin... 查看详情

实践丨springboot整合mybatis-plus项目存在mapper时报错

​摘要:​在SpringBoot运行测试Mybatis-Plus测试的时候报错的问题分析与修复本文分享自华为云社区《​​SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问题分析与修复​​》,作者:攻城狮Chova。异常信息在SpringBoot运行测试Mybat... 查看详情

第276天学习打卡(知识点回顾springboot整合mybatis-plus)

知识点回顾springboot整合Mybatis-plus自动配置MyBatisPlusAutoConfiguration配置类,MyBatisPlusProperties配置项绑定。mybatis-plus:xxx就是对mybatis-plus的定制SqlSessionFactory自动配置好,底层是容器中默认的数据源mapperLocations自动配置好的。有... 查看详情

springboot整合mybatis-plus

maven依赖注意:本文使用的是mysql,数据库依赖就不展示了<!--引入mvbatie-plusstarter--> <dependency> <groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><versi 查看详情

springboot使用druid与mybatis-plus整合(代码片段)

SpringBoot使用Druid与Mybatis-plus整合需要导入的依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependenc 查看详情

springboot2.x:整合mybatis-plus

简介Mybatis-Plus是在Mybatis的基础上,国人开发的一款持久层框架。并且荣获了2018年度开源中国最受欢迎的中国软件TOP5同样以简化开发为宗旨的SpringBoot与Mybatis-Plus放在一起会产生什么样的化学反应呢?下面我们来领略一下两者配... 查看详情

实践丨springboot整合mybatis-plus项目存在mapper时报错

...#xff0c;作者:攻城狮Chova。异常信息在SpringBoot运行测试Mybatis-Plus测试的时候报错:rg.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatin 查看详情

springboot整合mybatis-plus

1.添加pom引用maven的引用很简单,官方已经给出starter,不需要我们考虑它的依赖关系了,此处使用的是2.3版本。<dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-boot-starter</artif 查看详情

使用springboot+gradle快速整合mybatis-plus

作者:Stanley罗昊QQ:1164110146MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。注:作者使用IDEA编辑器使用SpringInitializr快速初始化一个SpringBoot工程在IDEA编辑左上角Fli... 查看详情

springboot整合mybatis-plus+druid组件,实现增删改查

前言本篇文章主要介绍的是SpringBoot整合mybatis-plus,实现增删改查。GitHub源码链接位于文章底部。建库建表创建springboot数据库,创建t_user表,字段id主键自增,name,age。工程结构添加依赖新建一个maven项目,在pom文件中添加以下依... 查看详情

springboot整合mybatis-plus逆向工程(代码片段)

MyBatis-Plus(简称MP)是一个?MyBatis?的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官方文档代码生成器AutoGenerator是MyBatis-Plus的代码生成器,通过AutoGenerator可以快速生成Entity、Mapper、MapperXML、Service... 查看详情

springboot整合mybatis-plus(代码片段)

...用三、减少硬编码四、代码生成器写在前面        mybatis-plus顾名思义就是mybatis的增强工具。对于mybatis的功能只做扩展、不做改变。体现在内置的Mapper对CRUD进行了封装、只需要通过简单的配置即可实现增删改查操作。而不... 查看详情

springboot整合mongodb操作工具类仿mybatis-plus风格(代码片段)

以下是仿照mybatis-plus风格操作mongodb的增删改查的工具类以及使用示例 pom文件引入依赖<!--mongodb--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb< 查看详情

使用springboot简单整合springsecurity和mybatis-plus(代码片段)

1、概述SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。SpringSecurity是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Sprin... 查看详情