这里以一个项目中查询文章的操作来做说明:

1、涉及的相关JavaBean

Article.java

public class Article extends BaseDomain {/***置顶状态*/public static final String ARTICLE_TOP = "1";/*** 非置顶状态*/public static final String ARTICLE_UNTOP = "0";private String id;private String title;private String description;private String pic;private String content;private Long click;private Timestamp createTime;private Timestamp updateTime;private String categoryId;private String username;private Long commentNum;private String isTop = ARTICLE_UNTOP;private Category category;private List<Keyword> keywords;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getPic() {return pic;}public void setPic(String pic) {this.pic = pic;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Long getClick() {return click;}public void setClick(Long click) {this.click = click;}public Timestamp getCreateTime() {return createTime;}public void setCreateTime(Timestamp createTime) {this.createTime = createTime;}public Timestamp getUpdateTime() {return updateTime;}public void setUpdateTime(Timestamp updateTime) {this.updateTime = updateTime;}public String getCategoryId() {return categoryId;}public void setCategoryId(String categoryId) {this.categoryId = categoryId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Long getCommentNum() {return commentNum;}public void setCommentNum(Long commentNum) {this.commentNum = commentNum;}public String getIsTop() {return isTop;}public void setIsTop(String isTop) {this.isTop = isTop;}public List<Keyword> getKeywords() {return keywords;}public void setKeywords(List<Keyword> keywords) {this.keywords = keywords;}public Category getCategory() {return category;}public void setCategory(Category category) {this.category = category;}
}

Page.java:

public class Page<T> extends BaseDomain implements Serializable {private static int DEFAULT_PAGE_SIZE = 20;private long startIndex = 1; //当前记录开始数private int pageSize = DEFAULT_PAGE_SIZE; // 每页的记录数private long totalCount; // 总记录数private long totalPage; // 总页数private List<T> data; // 当前页中存放的记录,类型一般为List/*** 构造方法,只构造空页.*/public Page() {this(0, DEFAULT_PAGE_SIZE, 0, 0, new ArrayList());}/*** 构造方法** @param startIndex 当前记录起始数* @param pageSize  本页容量* @param totalCount 数据库中总记录条数* @param totalPage 数据库中总页数* @param data   本页包含的数据*/public Page(long startIndex, int pageSize, long totalCount, long totalPage, List<T> data) {this.startIndex = startIndex;this.pageSize = pageSize;this.totalCount = totalCount;this.totalPage = totalPage;this.data = data;}/*** 取该页当前页码,页码从1开始.*/public long getCurrentPage() {return startIndex / pageSize + 1;}/*** 该页是否有下一页.*/public boolean isHasNextPage() {return this.getCurrentPage() < this.getTotalPage();}/*** 该页是否有上一页.*/public boolean isHasPreviousPage() {return this.getCurrentPage() > 1;}public long getStartIndex() {return startIndex;}public void setStartIndex(long startIndex) {this.startIndex = startIndex;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public long getTotalCount() {return totalCount;}public void setTotalCount(long totalCount) {this.totalCount = totalCount;}public long getTotalPage() {return totalPage;}public void setTotalPage(long totalPage) {this.totalPage = totalPage;}public List<T> getData() {return data;}public void setData(List<T> data) {this.data = data;}
}

2、接口

ArticleDao.java

@Repository
public interface ArticleDao {/*** 分页查询函数** @param parameters* 参数通过map传递,需要参数 startIndex pageSize 以及 需要查询的参数*/public Page<T> pagedQuery(Map<String, Object> parameters);
}

3、配置文件

ArticleDaoMapper.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" >
<mapper namespace="top.eussi.dao.ArticleDao" ><!-- 分页查询 --><resultMap id="LightResultMap" type="Article" ><id column="id" property="id" jdbcType="VARCHAR" /><result column="title" property="title" jdbcType="VARCHAR" /><result column="description" property="description" jdbcType="VARCHAR" /><result column="pic" property="pic" jdbcType="VARCHAR" /><result column="content" property="content" jdbcType="VARCHAR" /><result column="click" property="click" jdbcType="INTEGER" /><result column="create_time" property="createTime" jdbcType="TIMESTAMP" /><result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /><result column="category_id" property="categoryId" jdbcType="VARCHAR" /><result column="username" property="username" jdbcType="VARCHAR" /><result column="comment_num" property="commentNum" jdbcType="INTEGER" /><result column="is_top" property="isTop" jdbcType="VARCHAR" /></resultMap><resultMap type="Page" id="PageResultMap"><id column="startIndex" property="startIndex"/><id column="pageSize" property="pageSize"/><id column="totalCount" property="totalCount"/><id column="totalPage" property="totalPage"/><collection column="{startIndex=startIndex,pageSize=pageSize}" property="data" ofType="Article" select="getPageArticle"/></resultMap><sql id="Page_Column_Article" >id,title,description,pic,click,create_time,update_time,category_id,username,comment_num,is_top</sql><select id="getPageArticle" resultMap="LightResultMap" parameterType="hashmap" >select<include refid="Page_Column_Article" />from t_articleORDER BY create_time DESClimit #{startIndex}, #{pageSize}</select><!-- #是采用占用符, $是直接取到值 --><select id="pagedQuery" parameterType="hashmap" resultMap="PageResultMap">selectcount(1) totalCount,ceil(count(1)/${pageSize}) totalPage,${startIndex} startIndex,${pageSize} pageSizefrom t_article</select>
</mapper>

4、测试类:

articleDaoTest.java:

@ContextConfiguration("classpath*:/spring_conf/blog-dao.xml")
public class articleDaoTest extends AbstractTransactionalTestNGSpringContextTests{@Autowiredprivate ArticleDao articleDao;public void setArticleDao(ArticleDao articleDao) {this.articleDao = articleDao;}@Testpublic void getPageArticle() {Map<String, Object> hashMap = new HashMap<String, Object>();hashMap.put("startIndex", 1);hashMap.put("pageSize", 1);Page page = articleDao.pagedQuery(hashMap);System.out.println(page.toString());}
}

网上类似分页插件,拦截器实现的分页方式暂时未尝试,采用这种传统的分页方法,使用中最大的失误就是page中属性要和mapper文件中使用的属性对应上,花了较多时间,记录一下!!!

MyBatis分页填充page对象相关推荐

  1. mybatis 分页-- 传入page对象

    (1) 通过map,将page 放入map 中.拦截器中通过delegate.boundSql.parameterObject.page取.启动缓存时失效.需要拦截Executor 的query 重写 ...

  2. mybatis分页警告:Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClasss解决办法

    mybatis分页警告:Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class in WebappClasss解决办法 1.警 ...

  3. 使用Page对象进行分页

    1.本分页功能主要使用到了三个主要对象:Page/PageParam/PageUtils,根据前端输入的参数:查询条件以及PageParam对象. ps:还用到了PageHelper 主要思路是根据查 ...

  4. 使用mybatis-plus基于BaseMapper的Page对象按条件分页查询

    概述 在页面功能中经常会使用到分页对象,mybatis-plus中也为我们提供了分页操作对象Page 分页方法 需要注意的是Page对象接收当前页和当前页显示条数两个参数 //currentPage是 ...

  5. List转Page对象,看这篇就够了,附代码、实验结果分页自己编程实现

    List 转 Page 对象 处理统计等数据时分页展示.第三方接口仅返回list,需分页显示等需求 public class ConvertList2PageVOUtil {/*** List 转 P ...

  6. 都这么卷了,不懂MyBatis插件开发怎么行,教你实现一个MyBatis分页插件

    MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章 ...

  7. MyBatis分页插件PageHelper使用练习

    转载自:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 1.环境准备: 分页插件p ...

  8. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 urlify.cn/z2IFn2 推荐:https://www.xttblog. ...

  9. MyBatis学习总结(17)——Mybatis分页插件PageHelper

    2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊 ...

最新文章

  1. jqmobi快速开始(翻译)
  2. 通过nginx访问.html出现Access Denied提示怎么解决(亲测)
  3. 腾讯大数据星火计划--Angel技术沙龙 对外报名正式启动!
  4. windows下cmd中清屏
  5. 计算机win7内容已满,Win7旗舰版电脑C盘满了怎么清理
  6. 李宏毅机器学习(四)Spatial Transformer Layer
  7. JAVA程序员已成为最疯狂的加班行业,没有之一?
  8. 普罗米修斯监控java项目_java学到什么程度可以出去实习?
  9. 每日一题(易错)丨Oracle SQL优化与调优技术
  10. dijkstra 最短路算法
  11. JAVA设计模式-委派模式(Delegate)
  12. SAP License:SAP凭证的类别和记账码
  13. LaTeX公式打出U上面一个小圈表示去心领域的符号:\mathring{U}
  14. lambda python aws_AWS Lambda Layer For Python Pakage
  15. 如何使用分区工具实现无损分区大小调整?
  16. 震动活塞式柱状取样器的使用
  17. 华东、华北、华南的城市
  18. 开关灯效果HTML,开关灯效果
  19. effective morden c++ 2
  20. html5保存到桌面,win8.1将IE浏览器网页内容保存到电脑桌面的两种方法

热门文章

  1. msvcr110.dll下载(适用性强)
  2. Ant Design 表格:循环展示表头,表头添加图标icon
  3. php函数运算,PHP数学运算函数的功能及实例分析
  4. flutter自定义分页器
  5. PHP常用框架及漏洞
  6. idea代码提示不区分大小写
  7. c#读取excel两列数据并绘制xy曲线_我用Python展示Excel中常用的20个操作
  8. 学习笔记-RPC远程调用概念和实例
  9. Web前端就业前景怎样 在学web前端如何求职就业
  10. Android paypal支付 集成 Manifest merger failed with multiple errors, see logs