【MybatisPlus快速入门】(3)SpringBoot整合MybatisPlus 之 Lombok插件安装及MybatisPlus分页代码示例

之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介,在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多,我们一个个来学习,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境
在这里插入图片描述

1.Lombok

上一节我们学习了MybatisPlus的CRUD功能,代码写到这,我们会发现DAO接口类的编写现在变成最简单的了,里面什么都不用写。反过来看看模型类的编写都需要哪些内容:

  • 私有属性
  • setter…getter…方法
  • toString方法
  • 构造函数

虽然这些内容不难,同时也都是通过IDEA工具生成的,但是过程还是必须得走一遍,那么对于模型类
的编写有没有什么优化方法?就是我们接下来要学习的Lombok。
概念

  • Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发。

使用步骤

1.1 步骤1:添加lombok依赖

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<!--<version>1.18.12</version>-->
</dependency>

**注意:**版本可以不用写,因为SpringBoot中已经管理了lombok的版本。

2.2 步骤2:安装Lombok的插件

新版本IDEA已经内置了该插件,如果删除setter和getter方法程序有报红,则需要安装插件
在这里插入图片描述
如果在IDEA中找不到lombok插件,可以访问如下网站
https://plugins.jetbrains.com/plugin/6317-lombok/versions
根据自己IDEA的版本下载对应的lombok插件,下载成功后,在IDEA中采用离线安装的方式进行安装。
在这里插入图片描述

1.3 步骤3:模型类上添加注解

Lombok常见的注解有:

  • @Setter:为模型类的属性提供setter方法
  • @Getter:为模型类的属性提供getter方法
  • @ToString:为模型类的属性提供toString方法
  • @EqualsAndHashCode:为模型类的属性提供equals和hashcode方法
  • @Data:是个组合注解,包含上面的注解的功能
  • @NoArgsConstructor:提供一个无参构造函数
  • @AllArgsConstructor:提供一个包含所有参数的构造函数

Lombok的注解还有很多,上面标红的三个是比较常用的,其他的大家后期用到了,再去补充学习。

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
	private Long id;
	private String name;
	private String password;
	private Integer age;
	private String tel;
}

说明:
Lombok只是简化模型类的编写,我们之前的方法也能用,比如有人会问:我如果只想要有name和password的构造函数,该如何编写?

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
	private Long id;
	private String name;
	private String password;
	private Integer age;
	private String tel;
	public User(String name, String password) {
   
		this.name = name;
		this.password = password;
	}
}

这种方式是被允许的。

2 分页功能

基础的增删改查就已经学习完了,刚才我们在分析基础开发的时候,有一个分页功能还没有实现,在MP中如何实现分页功能,就是咱们接下来要学习的内容。
分页查询使用的方法是

 IPage<T> selectPage(IPage<T> page, Wrapper<T> queryWrapper)
  • IPage:用来构建分页查询条件
  • Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null
  • IPage:返回值,你会发现构建分页条件和方法的返回值都是IPage

IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按
ctrl+h,会找到其有一个实现类为Page。

2.1 步骤1:调用方法传入参数获取返回值

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
   
	@Autowired
	private UserDao userDao;
	//分页查询
	@Test
	void testSelectPage(){
   
		//1 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数
		IPage<User> page=new Page<>(1,3);
		//2 执行分页查询
		userDao.selectPage(page,null);
		//3 获取分页结果
		System.out.println("当前页码值:"+page.getCurrent());
		System.out.println("每页显示数:"+page.getSize());
		System.out.println("一共多少页:"+page.getPages());
		System.out.println("一共多少条数据:"+page.getTotal());
		System.out.println("数据:"+page.getRecords());
	}
}

2.2步骤2:设置分页拦截器

这个拦截器MP已经为我们提供好了,我们只需要将其配置成Spring管理的bean对象即可。

@Configuration
public class MybatisPlusConfig {
   
	@Bean
	public MybatisPlusInterceptor mybatisPlusInterceptor(){
   
		//1 创建MybatisPlusInterceptor拦截器对象
		MybatisPlusInterceptor mpInterceptor=new MybatisPlusInterceptor();
		//2 添加分页拦截器
		mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
		return mpInterceptor;
	}
}

说明:上面的代码记不住咋办呢?
这些内容在MP的官方文档中有详细的说明,我们可以查看官方文档类配置
在这里插入图片描述

2.3 步骤3:运行测试程序

在这里插入图片描述
如果想查看MP执行的SQL语句,可以修改application.yml配置文件,

mybatis-plus:
	configuration:
		log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印SQL日志到控制台

打开日志后,就可以在控制台打印出对应的SQL语句,开启日志功能性能就会受到影响,调试完后记得
关闭。
在这里插入图片描述

相关推荐

  1. MybatisPlus

    2023-12-24 09:14:01       34 阅读
  2. MybatisPlus

    2023-12-24 09:14:01       51 阅读
  3. MyBatisPlus 解析】

    2023-12-24 09:14:01       30 阅读
  4. SpringBoot3整合MyBatisPlus

    2023-12-24 09:14:01       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 09:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 09:14:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 09:14:01       82 阅读
  4. Python语言-面向对象

    2023-12-24 09:14:01       91 阅读

热门阅读

  1. 项目功能需求

    2023-12-24 09:14:01       64 阅读
  2. 长时间 灌包脚本(基于iperf)

    2023-12-24 09:14:01       61 阅读
  3. jvm 面试

    2023-12-24 09:14:01       56 阅读
  4. 碎片化的互联网

    2023-12-24 09:14:01       58 阅读
  5. C/C++不同整数类型的区别

    2023-12-24 09:14:01       63 阅读
  6. Global Mapper SDK 19 中文开发文档(八)

    2023-12-24 09:14:01       39 阅读
  7. docker-compose的使用

    2023-12-24 09:14:01       69 阅读
  8. 计算机视觉(CV)技术的优势

    2023-12-24 09:14:01       58 阅读
  9. 向量数据库的介绍

    2023-12-24 09:14:01       52 阅读
  10. API 接口怎样设计才安全?

    2023-12-24 09:14:01       66 阅读