PageHelper分页查询
Java猫
共 8939字,需浏览 18分钟
·
2021-04-25 21:45
SpringBoot使用PageHelper分页插件
使用mybatis进行分页查询
注意:
依赖:
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- SpringBoot/MyBatis使用PageHelper分页控件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
Controller控制器
/**
* Controller控制
*/
@RequestMapping("/book")
@RestController
public class BookController {
//注入业务层
@Autowired
private BookService bookService;
/**
* 获取分页数据
* @param pageNum 第几页
* @param pageSize 每页显示多少条
* @return 返回json数据
*/
@RequestMapping("/fenye/{pageNum}/{pageSize}")
@ResponseBody
public List<Book> fenye(@PathVariable("pageNum") int pageNum,@PathVariable("pageSize")int pageSize){
List<Book> list = bookService.getList(pageNum,pageSize);
return list;
}
}
使用RestFul风格进行数据访问。
Service业务层接口:
/**
* 分页查询
* @param pageNum 第几页
* @param pageSize 每页个数
* @return
*/
@Override
public List<Book> getList(int pageNum,int pageSize) {
//获取sqlSession对象
SqlSession session = sqlSessionFactory.openSession();
//获取mapper接口
BookDao mapper = session.getMapper(BookDao.class);
//分页数据处理 第几页 每页个数
PageHelper.startPage(2,5);
//执行分页查询
Page<Book> books = mapper.getList();
//返回List结果对象,而不是返回Page对象
List<Book> list = new ArrayList<>();
System.out.println("第几页:"+books.getPageNum());
System.out.println("每页数量:"+books.getPageSize());
System.out.println("总页数:"+books.getPages());
System.out.println("总记录数:"+books.getTotal());
for (Book book: books) {
System.out.println("查询结果:"+book);
list.add(book);
}
return list;
}
使用mapper接口进行数据查询,查询之前先进行分页处理。
业务接口实现的方法:
/**
* 业务层接口实现
*/
@Service
public class BookServiceImpl implements BookService {
//mybatis分页需要使用到sqlSession对象
@Autowired
private SqlSessionFactory sqlSessionFactory;
/**
* 分页查询
* @param pageNum 第几页
* @param pageSize 每页个数
* @return List集合
*/
@Override
public List<Book> getList(int pageNum,int pageSize) {
//获取sqlSession对象
SqlSession session = sqlSessionFactory.openSession();
//获取mapper接口
BookDao mapper = session.getMapper(BookDao.class);
//分页数据处理 第几页 每页个数
PageHelper.startPage(pageNum,pageSize);
//执行分页查询
Page<Book> books = mapper.getList();
//返回List结果对象,而不是返回Page对象
List<Book> list = new ArrayList<>();
System.out.println("第几页:"+books.getPageNum());
System.out.println("每页数量:"+books.getPageSize());
System.out.println("总页数:"+books.getPages());
System.out.println("总记录数:"+books.getTotal());
for (Book book: books) {
System.out.println("查询结果:"+book);
list.add(book);
}
return list;
}
}
Dao层接口:
/**
* 图书服务接口
*/
public interface BookService {
public Book findById(Book book);
public List<Book> findAll();
public Integer addBook(Book book);
//分页查询
public List<Book> getList(int pageNum,int pageSize);
}
mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace绑定mapper接口(重要!!!)-->
<mapper namespace="com.hbm.dao.BookDao">
<!--分页查询-->
<select id="getList" resultType="book">
select * from Book
</select>
</mapper>
测试结果:
提示:
本次测试环境为SpringBoot+mybatis。
总结:
注意一下流程就好了,Dao层的接口使用的是分页插件的Page对象,返回的数如果是List集合,可以在业务层取出来再返回给视图层。
评论