【Hibernate】【高级查询】【QueryObject+Page+dao.getPage(Query)】

高级查询就三步骤;

  1. 将页面请求来的查询数据,封装成一个XXXQuery对象.
  2. 在XXXDAOImpl中,声明方法public Page getPage(Query对象)
  3. Action中,调用方法得到Page对象,并响应.

query对象作用:拼接sql语句,生成sql的参数列表.用于处理请求.
getPage方法作用:将生成的查询结果封装成page对象
page对象作用: 里面是页面内容,包括页码信息,高级查询结果.用于响应.

Page<T>

page对象是页面的封装信息,用于响应给浏览器的对象.那么必须由以下8个信息.
这四个是外界提供的,由构造器传入
1. 总信息条数 ———dao.getPage() 通过Query对象的查总数hql
2. 当前页—————请求放过来的 封装于Query对象
3. 每页信息数 ———请求发过来 封装于Query对象
4. 高级查询结果——-dao.getPage() 通过Query对象查列表的list

这四个是自己生成的,由构造器声明
1. 上一页: ————当前页==1?当前页:当前页-1
2. 尾页—————-总信息条数%每页信息数==0?0:总信息条数/每页信息数+1
3. 下一页 ————-当前页==尾页?尾页:当前页+1
4. 首页 —————-1

public class Page<T> {
    private Integer nextPage;    //下一页
    private Integer prevPage;    //上一页
    private Integer firstPage;   //首页
    private Integer lastPage;    //尾页
    private Integer totalCount;  //总信息条数
    private Integer currentPage; //当前页
    private Integer pageSize;    //每页信息数
    private T  list;             //高级查询结果


    public Page(Integer totalCount, Integer currentPage, Integer pageSize,
            T list) {
        //四个传入
        this.totalCount = totalCount;
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.list = list;
        //四个声明
        this.firstPage=1;
        this.lastPage=totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize+1;
        this.nextPage=currentPage==lastPage?lastPage:currentPage+1;
        this.prevPage=currentPage==firstPage?firstPage:currentPage-1;

    }
    //省略setter getter toString
}

Query类

1.制定规范:IQuery

从Page类中,得知需要四个形参才可以创建page对象
Query要做的是提供六个参数给dao:
1.提供当前页currentPage.
2.提供每页信息数pageSize.
3.提供查询列表的条件hql:listHQL
4.提

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值