mybatis分页查询的实现
Posted 青青子衿啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis分页查询的实现相关的知识,希望对你有一定的参考价值。
一、总结了mybatis中五种不同实现分页查询的方法
UserMapper.java接口文件
public interface UserMapper { //分页查询 public List<User> selectForPage1(int startIndex,int pageSize); public List<User> selectForPage2(Map<String, Object> map); public Integer selectCount(); public List<User> selectForPage3(PageBean pageBean); //分页加模糊查询 public Integer selectCount2(String keywords); public List<User> selectForPage4(Map<String, Object> map); }
工具类PageBean.java
public class PageBean { private Integer currentPage; private Integer startIndex; private Integer pageSize=5; private Integer totalCount; private Integer totalPage; public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; this.startIndex=(this.currentPage-1)*this.pageSize; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; //计算总页数 this.totalPage=(int)Math.ceil((this.totalCount*1.0/this.pageSize)); } public Integer getTotalPage() { return totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getStartIndex() { return startIndex; } public void setStartIndex(Integer startIndex) { this.startIndex = startIndex; } }
UserMapper.xml文件
其中查询5是模糊加分页查询语句
<?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.gx.mapper.UserMapper"> <!-- 查询1 --> <select id="selectForPage1" resultType="User"> select * from user limit #{param1},#{param2} </select> <!-- 查询2--> <select id="selectForPage2" resultType="User"> select * from user limit #{startIndex},#{pageSize} </select> <!-- 查询3--> <select id="selectAll" resultType="User"> select * from user </select> <!-- 查询总条数--> <select id="selectCount" resultType="java.lang.Integer"> select count(*) from user </select> <!-- 查询4--> <select id="selectForPage3" resultType="User"> select * from user limit #{startIndex},#{pageSize} </select> <!-- 查询5--> <select id="selectForPage4" resultType="User"> select * from user where name like "%"#{keywords}"%" or address like "%"#{keywords}"%" limit #{startIndex},#{pageSize} </select> <!-- 模糊查询查询总条数--> <select id="selectCount2" resultType="java.lang.Integer" parameterType="java.lang.String"> select count(*) from user where name like "%"#{value}"%" or address like "%"#{value}"%" </select> </mapper>
测试test
其中方法6是模糊加分页查询测试
public class myTest { SqlSession session = MyBatisUtils.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class); @Test public void selectForPage1() { int currentPage=1; int pageSize=5; List<User> selectForPage = userMapper.selectForPage1((currentPage-1)*pageSize, pageSize); for (User user : selectForPage) { System.out.println(user); } MyBatisUtils.closeSession(session); } @Test public void selectForPage2() { int currentPage=1; int pageSize=5; Map<String , Object> map=new HashMap<>(); map.put("startIndex", (currentPage-1)*pageSize); map.put("pageSize", pageSize); List<User> selectForPage = userMapper.selectForPage2(map); for (User user : selectForPage) { System.out.println(user); } MyBatisUtils.closeSession(session); } @Test public void selectForPage3() { int currentPage=1; int pageSize=5; /** * 参数1:开始条 偏移量,下标 * 参数2:参数总条数 */ RowBounds rowBounds = new RowBounds((currentPage-1)*pageSize, pageSize); //使用mybatis里面提供的api去写的 List<User> list = session.selectList("com.gx.mapper.UserMapper.selectAll", null, rowBounds); for (User user : list) { System.out.println(user); } MyBatisUtils.closeSession(session); } @Test public void selectForPage4() { Integer count = userMapper.selectCount(); System.out.println(count); int currentPage=1; int pageSize=5; Map<String , Object> map=new HashMap<>(); map.put("startIndex", (currentPage-1)*pageSize); map.put("pageSize", pageSize); List<User> list = userMapper.selectForPage2(map); for (User user : list) { System.out.println(user); } System.out.println("当前第"+currentPage+"页,共"+count+"条"); MyBatisUtils.closeSession(session); } @Test public void selectForPage5() { PageBean bean = new PageBean(); bean.setCurrentPage(1); bean.setPageSize(5); //查询总条数 Integer count = userMapper.selectCount(); //放到pageBean bean.setTotalCount(count); List<User> list = userMapper.selectForPage3(bean); for (User user : list) { System.out.println(user); } System.out.println("当前第"+bean.getCurrentPage()+"页,共"+count+"条"); MyBatisUtils.closeSession(session); } @Test public void selectForPage6() { String keywords="云6"; PageBean bean = new PageBean(); bean.setCurrentPage(1); bean.setPageSize(5); //查询总条数 Integer count = userMapper.selectCount2(keywords); //放到pageBean bean.setTotalCount(count); Map<String , Object> map = new HashMap<>(); map.put("startIndex", bean.getStartIndex()); map.put("pageSize", bean.getPageSize()); map.put("keywords", keywords); List<User> list = userMapper.selectForPage4(map); for (User user : list) { System.out.println(user); } System.out.println("当前第"+bean.getCurrentPage()+"页,共"+count+"条"); MyBatisUtils.closeSession(session); } }
以上是关于mybatis分页查询的实现的主要内容,如果未能解决你的问题,请参考以下文章