ibatis 实现分页查询 简单粗暴
2017-08-29 14:28
309 查看
sqlMap中要有两个方法:count、pageSelect
<!-- 查询记录数 根据特定条件 -->
<select id="count" resultClass="long">
<![CDATA[
select count(*) from t_dat_dict
]]>
</select>
<!-- 分页查询已经使用Dialect进行分页,也可以不使用Dialect直接编写分页 因为分页查询将传 #offset#,#pageSize#,#lastRows#
三个参数,不同的数据库可以根于此三个参数属性应用不同的分页实现 -->
<select id="pageSelect" resultMap="cowboysResultMap">
select
<include refid="commonColumns" />
<![CDATA[
from t_dat_dict
]]>
<dynamic prepend="ORDER BY">
<isNotEmpty property="sortColumns">$sortColumns$</isNotEmpty>
</dynamic>
</select>
Dao层 调用count查询总记录条数。如有其他过滤条件则在page的Filter中添加
public String getCountQuery() {
return "Cowboys.count";
}
/**
* 分页查询记录
*
* @param statementName
* @param pageRequest
* @return
*/
protected Page pageQuery(String statementName, PageRequest pageRequest) {
//符合条件的总记录数
Number totalCount = (Number) this.getSqlMapClientTemplate().queryForObject(getCountQuery(),
pageRequest.getFilters());
//分页对象
Page page = new Page(pageRequest, totalCount.intValue());
// 与getSqlMapClientTemplate().queryForList(statementName,
// parameterObject)配合使用
Map otherFilters = new HashMap();
//页起始记录数
otherFilters.put("offset", page.getFirstResult());
//分页大小
otherFilters.put("pageSize", page.getPageSize());
//页结束记录数
otherFilters.put("lastRows", page.getFirstResult() + page.getPageSize());
//排序信息
otherFilters.put("sortColumns", pageRequest.getSortColumns());
// 混合两个filters为一个filters,MapAndObject.get()方法将在两个对象取值,Map如果取值为null,则再在Bean中取值
Map parameterObject = new MapAndObject(otherFilters, pageRequest.getFilters());
//分页查询
List list = getSqlMapClientTemplate().queryForList(statementName, parameterObject, page.getFirstResult(),
page.getPageSize());
page.setResult(list);
return page;
}
/**
* 根据页面查询条件,取得 WalletMchtInfoReg 表的分页信息.
* @param pageRequest 页面请求参数
* @return WalletMchtInfoReg 表的分页信息
*/
public Page findByPageRequest(PageRequest pageRequest) {
return pageQuery("Cowboys.pageSelect", pageRequest);
}
controller层调用 此处可以设置pageSize,pageNum,filter等条件
@GET
@RequestMapping(value = "/v4", method = RequestMethod.GET)
public @ResponseBody Page getPage() {
PageRequest<Map> pageRequest = new PageRequest(DEFAULT_SORT_COLUMNS);
pageRequest.setPageSize(5);
Page page = cowboysDao.findByPageRequest(pageRequest);
return page;
}
<!-- 查询记录数 根据特定条件 -->
<select id="count" resultClass="long">
<![CDATA[
select count(*) from t_dat_dict
]]>
</select>
<!-- 分页查询已经使用Dialect进行分页,也可以不使用Dialect直接编写分页 因为分页查询将传 #offset#,#pageSize#,#lastRows#
三个参数,不同的数据库可以根于此三个参数属性应用不同的分页实现 -->
<select id="pageSelect" resultMap="cowboysResultMap">
select
<include refid="commonColumns" />
<![CDATA[
from t_dat_dict
]]>
<dynamic prepend="ORDER BY">
<isNotEmpty property="sortColumns">$sortColumns$</isNotEmpty>
</dynamic>
</select>
Dao层 调用count查询总记录条数。如有其他过滤条件则在page的Filter中添加
public String getCountQuery() {
return "Cowboys.count";
}
/**
* 分页查询记录
*
* @param statementName
* @param pageRequest
* @return
*/
protected Page pageQuery(String statementName, PageRequest pageRequest) {
//符合条件的总记录数
Number totalCount = (Number) this.getSqlMapClientTemplate().queryForObject(getCountQuery(),
pageRequest.getFilters());
//分页对象
Page page = new Page(pageRequest, totalCount.intValue());
// 与getSqlMapClientTemplate().queryForList(statementName,
// parameterObject)配合使用
Map otherFilters = new HashMap();
//页起始记录数
otherFilters.put("offset", page.getFirstResult());
//分页大小
otherFilters.put("pageSize", page.getPageSize());
//页结束记录数
otherFilters.put("lastRows", page.getFirstResult() + page.getPageSize());
//排序信息
otherFilters.put("sortColumns", pageRequest.getSortColumns());
// 混合两个filters为一个filters,MapAndObject.get()方法将在两个对象取值,Map如果取值为null,则再在Bean中取值
Map parameterObject = new MapAndObject(otherFilters, pageRequest.getFilters());
//分页查询
List list = getSqlMapClientTemplate().queryForList(statementName, parameterObject, page.getFirstResult(),
page.getPageSize());
page.setResult(list);
return page;
}
/**
* 根据页面查询条件,取得 WalletMchtInfoReg 表的分页信息.
* @param pageRequest 页面请求参数
* @return WalletMchtInfoReg 表的分页信息
*/
public Page findByPageRequest(PageRequest pageRequest) {
return pageQuery("Cowboys.pageSelect", pageRequest);
}
controller层调用 此处可以设置pageSize,pageNum,filter等条件
@GET
@RequestMapping(value = "/v4", method = RequestMethod.GET)
public @ResponseBody Page getPage() {
PageRequest<Map> pageRequest = new PageRequest(DEFAULT_SORT_COLUMNS);
pageRequest.setPageSize(5);
Page page = cowboysDao.findByPageRequest(pageRequest);
return page;
}
相关文章推荐
- Ibatis调用存储过程实现增删改以及分页查询
- Ibatis调用存储过程实现增删改以及分页查询
- Spring3+ibatis (SQL Server)+pager-taglib.tld查询分页的实现
- ibatis实现分页查询
- 使用ibatis实现动态分页查询
- 使用ibatis实现动态分页查询
- [置顶] ExtJs4.2应用:ExtJs4.2+Mysql+Struts2+Hibernate3实现分页查询
- 使用valuelist实现查询结果集的分页显示
- 根据ajax发送数据,从servelt中读取xml数据并显示,实现查询、删除和分页
- JQuery+Ajax实现数据查询、排序和分页功能
- 使用SparkSQL实现多线程分页查询并写入文件
- IntelliJ IDEA中ajax开发实现分页查询
- sql拼接实现自由多条件查询及内容分页总结
- 分页查询 oralce sqlserver mybatic实现原理
- iBATIS动态查询的实现浅析
- ibatis 分页 实现 (物理分页)
- 四种方式实现SQLServer 分页查询
- 详述 DB2 分页查询及 Java 实现
- 在Spring Boot中使用Spring-data-jpa实现分页查询
- 使用 HibernateTemplate 实现分页查询