oracle分页(mybatis oracle分页)

最近在看《冬眠》。嗯,虽然很多人说Mybatis有多轻巧灵活。但是不得不说hibernate包装的很好,很强大。虽然马巴蒂斯的逆向工程真的挺烂的。以前没学的时候

最近在看《冬眠》。

oracle分页(mybatis oracle分页)插图

嗯,虽然很多人说Mybatis有多轻巧灵活。

但是不得不说hibernate包装的很好,很强大。

虽然马巴蒂斯的逆向工程真的挺烂的。

以前没学的时候知道的不多。

可能每个人对新的不熟悉的东西都会有这种感觉。

说多了。......

今天翻看了一些以前毕节的节日,复习了一些基础知识。

刚开始自学的时候,分页查询真的看不懂。

然而,通过回顾过去,你会学到新的东西,这是真的。当你不理解过去的事情时,如果你回头看,你会有不同的感觉。

话不多说,加载代码...其实真的很卑微。

Dao分组接口

public interface TBrandDao { //查询所有品牌 public List<TBrand> queryAll(); //分页和条件查询品牌 public List<TBrand> queryByPage(BrandQuery query); //根据条件查询总页数 public int queryPage(BrandQuery query);}

分页的时候需要start、end等一些参数,确实比较麻烦,所以直接封装。因为如果做一个前端分页的列表,肯定会涉及到一些其他的条件查询。您可以在pojo中封装分页信息和其他条件。好吧,个人喜好。

xmlmapper

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ""><!-- 映射指向dao接口 --><mapper namespace="com.tjzs.sccms.dao.TBrandDao"> <select id="queryAll" resultType="TBrand" > select * from tbrand </select> <sql id="where"> <where> <if test="bname!=null and bname!=''"> bname=#{bname} </if> </where> </sql> <select id="queryByPage" parameterType="BrandQuery" resultType="TBrand"> select s.* from (select rownum rnm,t.* from tbrand t <include refid="where"/>)s where s.rnm >= #{start} and s.rnm<= #{end} </select> <select id="queryPage" parameterType="BrandQuery" resultType="int"> select count(1) from tbrand <include refid="where"/> </select> </mapper>

测试用的本地Oracle数据库,破解了,每次可以用30天,不得不说国人厉害。

Oracle中分页的条件查询使用的是rownum这个字段,和MySQL有些不同。

MySQL页面有限。

然后是服务层的接口。

/** * brand 服务层 * @author Administrator * */public interface BrandService { public List<TBrand> queryAll(); //分页和条件查询品牌 public List<TBrand> queryByPage(BrandQuery query,int page); //根据条件查询总页数 public int querypage(BrandQuery query);}

自然实现类也是不可或缺的。

@Servicepublic class BrandServiceImpl implements BrandService { @Autowired TBrandDao brandDao; @Override public List<TBrand> queryAll() { // TODO Auto-generated method stub List<TBrand> brandList = brandDao.queryAll(); return brandList; } //分页查询 @Override public List<TBrand> queryByPage(BrandQuery query,int page) { // TODO Auto-generated method stub int start=(page-1)*Constants.ROW+1; int end=page*Constants.ROW; query.setStart(start); query.setEnd(end); System.out.println(start+"----"+end); List<TBrand> brands = brandDao.queryByPage(query); return brands; } //查询总页数 @Override public int querypage(BrandQuery query) { // TODO Auto-generated method stub int pages=brandDao.queryPage(query); //如果页面书可以被条数整除 直接返回计算结果 否则+1 if(pages%Constants.ROW==0) { return pages/Constants.ROW; }else { return pages/Constants.ROW+1; } }}

然后是控制层代码控制器。

/** * 品牌管理控制层 * @author Administrator * */@Controller@RequestMapping("/brand")public class BrandController { @Autowired BrandService BrandService; //品牌管理 @RequestMapping("/list.do") public String brandList(Model model,BrandQuery query,String page){ if(page==null||page=="") { page="1"; } List<TBrand> brands = BrandService.queryByPage(query, Integer.parseInt(page)); model.addAttribute("brands", brands); model.addAttribute("currentPage", page); model.addAttribute("query", query); model.addAttribute("pages", BrandService.querypage(query)); return "brand/list"; }

将所有数据加载到模型中,以将数据传输到前台。

然后可以直接在前端jsp中使用。

<tbody class="pn-ltbody"> <c:forEach items="${brands }" var="brand"> <tr bgcolor="#ffffff" onmouseout="this.bgColor='#ffffff'" onmouseover="this.bgColor='#eeeeee'"> <td><input type="checkbox" value="${brand.id }" name="ids"/></td> <td align="center">${brand.id }</td> <td align="center">${brand.bname }</td> <td align="center"><img width="40" height="40" src="${brand.logopic }"/></td> <td align="center">${brand.discribe }</td> <td align="center">1</td> <td align="center">shi</td> <td align="center"> <a class="pn-opt" href="add.html">修改</a> | <a class="pn-opt" onclick="if(!confirm('您确定删除吗?')) {return false;}" href="#">删除</a> </td> </tr> </c:forEach> </tbody> </table><div class="page pb15"> <span class="r inb_a page_b"> <!-- [当前页/尾页] --> [${currentPage }/${pages }] <!-- 首页 --> <a href="list.do?bname=${query.bname }">首页</a> <!-- 上一页,下一页 --> <c:if test="${currentPage-1>0 }"> <a href="list.do?page=${currentPage-1 }&?bname=${query.bname }">上一页</a> </c:if> <c:if test="${currentPage+1<=pages }"> <a href="list.do?page=${currentPage+1 }&?bname=${query.bname }">下一页</a> </c:if> <!-- 尾页 --> <a href="list.do?page=${pages }&?pname=${query.bname }">尾页</a> </span></div>

在前端列表下方添加分页。

难看的一批,但是实用。

如果你熟悉前端

可以用css美化一些页面。

然后呢?高页的分页功能就出来了。

不过现在的项目都是逆向工程。

或者hibernate hql或者criteria之类的。

工具好用,但是基础更重要不是吗?

毕竟框架总会更新变化,但基础永远不会变。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/153568.html

发表回复

登录后才能评论