Mybatis使用Oracle分页

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>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值