当前位置: 首页 > article >正文

springboot 整合Mybatis-Plus分页、自动填充功能

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 测试结果如图所示
在这里插入图片描述
-----------------------------------------------------------------------~~~~ ----------------------
在这里插入图片描述


http://www.kler.cn/a/4331.html

相关文章:

  • Spring Boot 实战篇(四):实现用户登录与注册功能
  • Vulnhub DC-8靶机攻击实战(一)
  • 网络科技有限公司网络设计
  • 归纳webpack
  • excel仅复制可见单元格,仅复制筛选后内容
  • [SAP ABAP] 批量导入(BDC)练习案例
  • jenkins+sonarqube+自动部署服务
  • 嵌入式学习笔记——PWM与输入捕获(上)
  • leetcode 1402. Reducing Dishes(减少菜肴)
  • linux练习
  • 图解redis的client的实现
  • 如何防御DDOS攻击 DDOS攻击是什么意思
  • golang后端与android端TCP Socket通信数据解析格式问题
  • Linux配置DNS正向和反向解析练习
  • 正确认识2-ArmPEG NH2,2 Branched PEG Amine, 2 Arm/Branched PEG Amine,二臂聚乙二醇胺基,相关知识
  • BAPI_GOODSMVT_CREATE(调拨 收货 发货 入库 退货)BAPI
  • Android Jetpack从使用到源码深耕【开篇】
  • 【洛谷P8306】【模板】字典树
  • 两篇2023 ICLR多模态论文分享(模态互补性对多模态鲁棒性影响 与 对多模表示学习有效的单模学习)
  • 最近的学习目标
  • leetcode112:路径总和
  • wait讲解
  • 网络排查命令
  • JavaScript中链式调用大合集、应付面试够够的
  • 在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
  • VMware虚拟机与主机无法互传文件的解决办法