Mybatis使用Oracle分页
一、
pageResult.java类
public class PageResult<T> {
private List<T> dataList;
private int page;// 当前页
private int pageSize;
private int total;// 数据总数
private int totalPage;// 总页数
private int start;
private String url;
public PageResult(int page, int pageSize, int total, String url) {
this.page = page;
this.pageSize = pageSize;
this.total = total;
totalPage = (total % pageSize == 0) ? (total / pageSize) : (total
/ pageSize + 1);
if (page < 1) {
this.page = 1;
this.totalPage = 1;
}
if (page > totalPage && totalPage > 0) {
this.page = totalPage;
}
start = (page - 1) * pageSize;
if (url.indexOf("?") >= 0) {
this.url = url + "&page=";
} else {
this.url = url + "?page=";
}
}
//get set方法省略
}
二、
controller控制器
public ModelAndView list(HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
mv.setViewName("name/list");
String key = request.getParameter("key");
String pageStr = request.getParameter("page");
int page = 1;
StringBuffer url = new StringBuffer("list");
if (Utils.isNotEmpty(key)) {
url.append("?key=").append(key);
if (Utils.isNotEmpty(pageStr)) {
page = Integer.valueOf(pageStr);
}else {
page = 1;
}
}
else if (Utils.isNotEmpty(pageStr)) {
page = Integer.valueOf(pageStr);
}else {
page = 1;
}
PageResult<Info> pageResult = service.findInfoPageResult(url.toString(), key, page, Common.PAGESIZE);
mv.addObject("key", key);
mv.addObject("list", pageResult.getDataList());
mv.addObject("pageResult", pageResult);
return mv;
}
三、
service类
public PageResult<Info> findInfoPageResult(
String url, String key, int page, int pageSize) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("key", key);
int total = dao.findTotalInfo(map);
PageResult<Info> result = new PageResult<Info>(page, pageSize, total, url);
map.put("start", (result.getPage()-1)*result.getPageSize());
map.put("end", result.getPage()*result.getPageSize());
List<Info> list = taskDao.findInfoPageResult(map);
result.setDataList(list);
return result;
}
四、mybatis中的sql(针对oracle数据库)
<select id="findTotalInfo" parameterType="java.util.HashMap" resultType="java.lang.Integer">
SELECT count(t.id) FROM tbl t
WHERE 1=1
<if test="key!=null and key!=''">
AND (t.NAME = #{key})
</if>
</select>
<select id="findInfoPageResult" parameterType="java.util.HashMap" resultType="Info">
SELECT *
FROM (SELECT tt.*, ROWNUM AS rowno
FROM ( SELECT t.*
FROM tbl t
WHERE 1=1
<if test="key!=null and key!=''">
AND (t.NAME = #{key})
</if>
ORDER BY create_date DESC) tt
WHERE ROWNUM <![CDATA[ <= ]]> #{end}) table_alias
WHERE table_alias.rowno <![CDATA[ > ]]> #{start}
</select>
五、
html-可以独立引入页面
模仿百度分页样式
<!DOCTYPE html>
<html lang="zh-CN">
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<div class="pull-right layui-box layui-laypage layui-laypage-default"
id="layui-laypage-2">
<a href="<#if pageResult.page==1>javascript:;<#else>${pageResult.url+(pageResult.page-1)}</#if>"
class="layui-laypage-prev <#if pageResult.page==1>layui-disabled<#else></#if>" data-page="0">上一页</a>
<#if pageResult.totalPage <= 10>
<#list 1..pageResult.totalPage as t>
<#if pageResult.page==t>
<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>${t}</em></span>
</#if>
<#if pageResult.page!=t>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
</#list>
</#if>
<#if pageResult.totalPage gt 10>
<#if pageResult.page <= 6>
<#list 1..pageResult.totalPage as t>
<#if pageResult.page==t>
<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>${t}</em></span>
</#if>
<#if pageResult.page!=t && t < 10>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
<#if pageResult.page!=t && t == pageResult.totalPage>
<span class="layui-laypage-spr">…</span>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
</#list>
</#if>
<#if pageResult.page gt 6>
<#list 1..pageResult.totalPage as t>
<#if pageResult.page!=t && t == 1>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
<span class="layui-laypage-spr">…</span>
</#if>
<#if pageResult.page==t>
<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>${t}</em></span>
</#if>
<#if (pageResult.totalPage - pageResult.page) gte 4>
<#if t gt (pageResult.page - 5) && t < (pageResult.page + 5) && pageResult.page!=t && t != pageResult.totalPage>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
</#if>
<#if (pageResult.totalPage - pageResult.page) < 4>
<#if pageResult.page!=t && t gt pageResult.totalPage-9 && t != pageResult.totalPage>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
</#if>
<#if pageResult.page!=t && t == pageResult.totalPage>
<#if (pageResult.totalPage - pageResult.page) gt 5>
<span class="layui-laypage-spr">…</span>
</#if>
<a href="${pageResult.url+t}" data-page="${t}">${t}</a>
</#if>
</#list>
</#if>
</#if>
<a href="<#if pageResult.page==pageResult.totalPage>javascript:;<#else>${pageResult.url+(pageResult.page+1)}</#if>"
class="layui-laypage-next <#if pageResult.page==pageResult.totalPage>layui-disabled<#else></#if>" data-page="2">下一页</a>
</div>
</html>