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

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. python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
  2. 编写文档_如何通过编写优质文档来使自己的未来快乐
  3. 7:MD5、圆形图片、动态换肤
  4. python 底层原理_Python字典的核心底层原理讲解
  5. 牛客练习赛69D-火柴排队【dp】
  6. SQLPrompt 安装后sql上看不到菜单
  7. 【jQuery笔记Part1】03-jQuery加载模式对比JS
  8. 来谈谈C++ 位运算 | ^ ~ %
  9. 行业大佬集体唱衰教育O2O,强管控的B2C模式将是唯一出路
  10. catti二级笔译综合能力真题_2006年-2011年CATTI二级笔译综合能力试题及答案2018年.doc...
  11. Camera成像原理(二十四)
  12. [奶奶看了都会]京东自动签到薅羊毛-完整教程
  13. 优化问题 - 内点法
  14. 转轮密码机的加解密算法实现
  15. MATLAB | MATLAB配色不够用 全网最全的colormap补充包来啦
  16. 字节跳动为什么选用 Flutter : 可能成为不一样的未来 | 开发者说·DTalk
  17. 最小二乘法的线性拟合
  18. 浅尝Pytorch自动混合精度AMP
  19. 计算机网络:IP地址和子网掩码的关系
  20. 混合IT的新世界 存储工程师的江湖地位不保?

热门文章

  1. Python range() 函数用法细解(附猴子吃桃问题引例)
  2. 【链塔DApp日报】BDI指数增长10.19%,以太坊 24h交易额增长12.27%
  3. 【小波理论及其应用】
  4. Django通用显示视图DetailView与ListView
  5. python 映射表结构_Python 中常见的数据结构:字典、映射和散列表
  6. Word 里文字对齐的4种方法
  7. Lombok通过@Data注解生成get/set方法时,不生成某个字段的get/set方法
  8. 在软件定义汽车的时代,低代码究竟给车企数字化转型带来了什么?
  9. 中小企业网络营销的5个技巧!
  10. 【sql server】各数据类型详解