MyBatis-Plus的分页插件介绍
MyBatis-Plus的分页插件是一个功能强大的工具,它使得在MyBatis-Plus框架中实现分页查询变得简单而高效。
以下是对MyBatis-Plus分页插件的详细介绍:
功能特点
• 自动分页:分页插件能够自动处理分页逻辑,开发者无需手动编写分页SQL语句。
• 多数据库支持:插件支持多种数据库类型,包括MySQL、PostgreSQL、Oracle等,通过指定数据库类型( DbType ),插件能够生成适合特定数据库的分页SQL。
• 灵活配置:提供了多种配置项,如溢出总页数处理( overflow )、单页分页条数限制( maxLimit )等,以适应不同的业务需求。
配置分页插件
package com.nie.hellomp.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MPConfiguration {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
分页插件的使用说明
构造分页对象
分页对象包含了分页的各项信息,其核心属性如下:
属性名 | 描述 |
---|---|
records | 查询数据列表 |
total | 查询列表总记录数 |
size | 每页显示条数,默认10 |
current | 当前页 |
分页对象既作为分页查询的参数,也作为分页查询的返回结果,当作为查询参数时,通常只需提供 current 和 size 属性
IPage<T> page = new Page<>(current, size);
测试service层的page案例
package com.nie.hellomp.page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nie.hellomp.entity.User;
import com.nie.hellomp.mapper.UserMapper;
import com.nie.hellomp.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class PageTest {
@Autowired
private UserService userService;
@Autowired
private UserMapper userMapper;
@Test
public void testPageService(){
IPage<User> userPage = new Page<>(2,4);
IPage<User> page = userService.page(userPage);
page.getRecords().forEach(System.out::println);
}
}
测试结果如下
### 测试mapper层的page案例
package com.nie.hellomp.page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nie.hellomp.entity.User;
import com.nie.hellomp.mapper.UserMapper;
import com.nie.hellomp.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class PageTest {
@Autowired
private UserMapper userMapper;
@Test
public void testPageMapper(){
IPage<User> userPage = new Page<>(2,3);
IPage<User> page = userMapper.selectPage(userPage,null);
page.getRecords().forEach(System.out::println);
}
}
测试结果如下:
### 测试自定义的page案例
编写Mapper自定义方法
package com.nie.hellomp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nie.hellomp.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUserPage(IPage<User> page);
}
编写mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nie.hellomp.mapper.UserMapper">
<select id="selectUserPage" resultType="com.nie.hellomp.entity.User">
select * from user
</select>
</mapper>
编写测试类
package com.nie.hellomp.page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nie.hellomp.entity.User;
import com.nie.hellomp.mapper.UserMapper;
import com.nie.hellomp.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class PageTest {
@Autowired
private UserService userService;
@Autowired
private UserMapper userMapper;
@Test
public void testCustomPage(){
IPage<User> userPage = new Page<>(1,5);
IPage<User> userIPage = userMapper.selectUserPage(userPage);
userIPage.getRecords().forEach(System.out::println);
}
}
测试效果如下:
MyBatisX插件介绍
MyBatisX 是一款专为 IntelliJ IDEA 设计的快速开发插件,旨在提升 MyBatis 与 MyBatis-Plus 框架的开发效率。以下是对 MyBatisX 插件的详细介绍:
核心功能
• XML 映射跳转:提供了便捷的 XML 映射文件与 Java 接口之间的跳转功能,让开发者能够快速地在两者之间切换,提高开发效率。
• 代码生成:通过 MybatisX,您可以轻松地根据数据库表结构生成对应的 Java 实体类、Mapper 接口及 XML 映射文件。
• 重置模板:允许您重置代码生成模板,以恢复到默认设置或自定义模板内容。
• JPA 风格提示:支持 JPA 风格的代码提示,包括新增、查询、修改和删除操作的自动代码生成。
功能详解
• Java 与 XML 调回跳转:在 DAO 层和对应的 XML 文件之间快速跳转,提高代码编写效率。
• Mapper 方法自动生成 XML:在 DAO 中写好对应方法后,按Alt+Enter
选择自动生成就能自动在 XML 中生成对应的映射方法。
• 代码生成器:连接到数据库,选择表,右键选择 Mybatis-Generator,配置后自动生成 DAO、POJO 和 XML。
插件特点
• 节省开发时间:通过自动生成代码和 JPA 风格的代码提示,节省大量持久层代码开发时间。
• 强大的功能支持:为业务编写提供各类支持,如自动生成 SQL 实现等。
• 配置简单:告别各类复杂的配置文件,通过可视化配置简化开发流程。
兼容性
• 理论上兼容 Java SE、Maven、Gradle 等项目。
• 对 Maven 管理的 Spring Boot 项目适配较好。
社区反馈
• 作者会不定期修复插件的问题以及增加新的特性功能。
• 用户可以通过指定渠道反馈问题或提出功能诉求。
MyBatisX 插件通过提供代码生成、XML 映射跳转、JPA 风格提示等功能,极大地提高了使用 MyBatis 和 MyBatis-Plus 框架的开发效率,是 Java 开发者在 IntelliJ IDEA 中的得力助手。
安装MyBatisX
直接进入IDEA搜索MyBatisX
配置数据库
-
点击右上角的这个图标
-
点击Data Source 然后点击MYSQL
-
填写MYSQL信息
-
点击应用 并且确定
-
这样数据库就连接好了
直接生成代码
- 选择数据表 鼠标右键 点击第一个按钮
- 配置实体类信息 配置完点击Next
- 选择模板 配置完点击Finish
- 这样我们的实习类 service层 mapper层 都自动生成好了