一、mybatis-plus单表查询
使用mybatis-plus实现单表分页查询 非常方便,主要操作步骤如下:
配置分页查询拦截器进行分页查询
1.首先,打开mybatis-plus官网的插件(插件主体) 或者点击mybatis-plus插件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/90630be427eb43d4b0bfd1e5e4723ba2.png)
我是配置在springboot项目中,所以找到springboot的分页配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/b1bd94e408184ec5b8c74521fc9a4fdd.png)
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
2.配置分页查询拦截器
将分页查询拦截器装载到springboot容器中
在项目中新建config目录,该配置目录下新建 分页配置类PageConfig ![在这里插入图片描述](https://img-blog.csdnimg.cn/956874bba23a4564ba5c1388ed5df1ee.png)
package com.sangeng.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
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 //定义配置类,类内部包含 被@Bean注解的方法,被相关类扫描,并用于构建bean定义,初始化Spring容器。
public class PageConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
}
3.测试类中测试分页
分页对象page,设置相关的分页信息 (最终也可以从分页对象中获取分页信息)调用分页方法
@Test
public void testPage(){
//查询第一页,每页显示2条记录
IPage page = new Page(); //page 分页对象,设置相关的分页信息
//设置每页条数 即pageSize
page.setSize(2);
//设置查询第几页 即pageNum
page.setCurrent(1);
userMapper.selectPage(page, null);// queryWrapper设置查询条件null
// 查询后的结果 会 返回到page中
System.out.println(page.getRecords()); //当前页面的 数据
System.out.println(page.getTotal()); //获取总记录数(数据库目前一共5条记录)
System.out.println(page.getCurrent()); //获取当前页码 (第1页)
}
debug调试说明 注:分页后的内容,以及相关参数(当前页码,每页条数,总记录数)都可以从分页对象page中拿到,方便后面使用。
二、mybatis-plus多表查询
2.1多表查询SQL语句
在xml中不需要关心分页操作,mybatis-plus会帮我们完成
查orders表所有属性 + user表的一个属性user_name
SELECT
o.*,u.`user_name`
FROM
USER u,orders o
WHERE
o.`user_id` = u.`id`
2.2 定义一个实体类Orders 属性包含orders表所有属性 + user表的一个属性user_name 2.3定义OrdersMapper接口,xml写SQL语句 mapper接口中的方法的 第一个参数定义成Page类型 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ab0869b3e94b4fc0bcd63b0c79abe356.png)
package com.sangeng.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sangeng.domain.Orders;
public interface OrdersMapper extends BaseMapper {
//要实现自定义分页,修改 返回类型IPage + 参数类型 Page ?改成实体类Orders
IPage findAllOrders(Page page);
}
SELECT
o.*, u.user_name
FROM `user` u, orders o
WHERE o.id = u.id
2.4调用方法测试 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d2bff8f1c02b4e28b5f4f3c44bfc1d23.png)
@Autowired
private OrdersMapper ordersMapper;
@Test
public void testOrdersPage(){
Page page = new Page();
//设置每页大小
page.setSize(2);
//设置当前页码
page.setCurrent(2);
ordersMapper.findAllOrders(page);
System.out.println(page.getRecords());
System.out.println(page.getTotal());
}
|