Hibernate简单分页
5.1 准备工作
建立项目,加入jar
建立hibernate.cfg.xml
建立pojo类和对应的映射文件
5.2 建立vo类PageEntity
package org.guangsoft.vo;
/***
*
* 定义vo封装自己需要的数据和数据库不存在映射关系
*
* ***/
public class PageEntity
{
private Integer pagenum; // 当前页数
private Integer pagesize; // 每页数据库量
private Integer maxpage; // 最大页数
private Integer rows; // 数据库对应的总行数
public Integer getPagenum()
{
return pagenum;
}
public void setPagenum(Integer pagenum)
{
this.pagenum = pagenum;
}
public Integer getPagesize()
{
return pagesize;
}
public void setPagesize(Integer pagesize)
{
this.pagesize = pagesize;
}
public Integer getMaxpage()
{
return maxpage;
}
public void setMaxpage(Integer maxpage)
{
this.maxpage = maxpage;
}
public Integer getRows()
{
return rows;
}
public void setRows(Integer rows)
{
this.rows = rows;
}
}
5.3定义分页接口
package com.bjsxt.dao;
import java.util.List;
import com.bjsxt.pojo.Student;
import org.guangsoft.vo.PageEntity;
/***
*
* 学生表的crud操作定义
*
* ***/
public interface StudentDao
{
/***
*
* 定义分页方法
*
*
*
* ***/
public List<Student> selectStudentOfPage(PageEntity pe);
/**
*
* 获得总行数
*
* ***/
public Long selectCountRows();
}
5.4建立接口的实现类
package org.guangsoft.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.guangsoft.dao.StudentDao;
import org.guangsoft.pojo.Student;
import org.guangsogt.vo.PageEntity;
public class StudentDaoImpl implements StudentDao
{
/**
*
* 通过静态代码块加载配置文件
*
* ****/
static SessionFactory sf = null;
static
{
// 1 创建Configuration对象,用来加载hibernate的配置文件
Configuration cfg = new Configuration();
// 2加载配置文件
cfg.configure("hibernate.cfg.xml");
// 3通过cfg构造一个会话工厂对象
sf = cfg.buildSessionFactory();
}
@Override
public List<Student> selectStudentOfPage(PageEntity pe)
{
// TODO Auto-generated method stub
/*
* String hql="from Student";
*
* //创建Query对象
*
* Session session=sf.openSession();
*
* Query q=session.createQuery(hql);
*
* //设置分页参数
*
* q.setMaxResults(pe.getPagesize()); //每页数据量
*
* //查询的起始位置
*
* q.setFirstResult((pe.getPagenum()-1)*pe.getPagesize());
*
*
*
* return q.list();
*/
Session session = sf.openSession();
// 创建Criteria对象,用来实现标准的对象查询
Criteria c = session.createCriteria(Student.class);
// 设置分页参数
c.setMaxResults(pe.getPagesize()); // 每页数据量
// 查询的起始位置
c.setFirstResult((pe.getPagenum() - 1) * pe.getPagesize());
return c.list();
}
@Override
public Long selectCountRows()
{
// TODO Auto-generated method stub
// hql语句
String hql = "select count(sno) from Student";
Session session = sf.openSession();
// 如果查询的结果是单行,单列使用uniqueResult()
Object rows = session.createQuery(hql).uniqueResult();
return (Long) rows;
}
}、
5.5 建立测试类
package org.guangsoft.test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.guangsoft.dao.StudentDao;
import org.guangsoft.dao.impl.StudentDaoImpl;
import org.guangsoft.pojo.Student;
import org.guangsoft.vo.PageEntity;
public class TestCrud
{
// 声明Dao变量
StudentDao dao;
/***
*
* init方法在所有加@Test注解的方法执行之前,会自动执行。
*
* ***/
@Before
public void init()
{
dao = new StudentDaoImpl();
}
/***
*
* 分页查询
*
* ***/
@Test
public void testSelectStudentBySno()
{
PageEntity pe = new PageEntity();
pe.setPagenum(2);
pe.setPagesize(2);
List<Student> list = dao.selectStudentOfPage(pe);
for (Student s : list)
{
System.out.println("-----" + s.getSno() + "\t" + s.getSname()
+ "\t" + s.getAddress() + "\t" + s.getBirthday());
}
}
/**
*
* 测试获得总行数
*
* ***/
@Test
public void testCountRows()
{
Long rows = dao.selectCountRows();
System.out.println(rows);
}
}
Hibernate简单分页的更多相关文章
- 【hibernate】<第一节>hibernate简单入门
所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对应mysql的驱动类(对应jar包如图 ...
- JavaScript简单分页,兼容IE6,~3KB
简介 兼容IE6+及现代浏览器的简单分页,支持同一页面多个分页. 使用 Browser <link rel="stylesheet" href="css/GB-pa ...
- 菜鸟学习Hibernate——简单的增、删、改、查操作
上篇博客利用Hibernate搭建起一个简单的例子,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述如何利用Hinbernate框架实现简单的数据库操作. 1.加入junit.jar 2.新建 ...
- 新秀学习Hibernate——简单的增加、删、更改、检查操作
部分博客使用Hibernate单的样例,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述怎样利用Hinbernate框架实现简单的数据库操作. 1.增加junit.jar 2.新建一个工具类H ...
- Hibernate中分页
query.setFirstResult(4);query.setMaxResults(5); 这两个方法就是hibernate的分页
- MVC简单分页
对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...
- 使用Vs2005打造简单分页浏览器(1)原创
原文:使用Vs2005打造简单分页浏览器(1)原创 使用Vs2005打造简单分页浏览器(1)原创1引言2功能3实现过程以及关键点4总结5不足之处6其他7 代码下载 1 引言很早就有搞一个浏览器的 ...
- MVC001之mvcpager简单分页
描述:用mvcpager实现简单分页功能 参考网址: http://www.cnblogs.com/iamlilinfeng/archive/2013/03/11/2951460.html http: ...
- vue.js 2.0实现的简单分页
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
随机推荐
- 【开源一个小工具】一键将网页内容推送到Kindle
最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...
- poj 3744 Scout YYF I(概率dp,矩阵优化)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5020 Accepted: 1355 Descr ...
- java mail
java mail 1.配置 mvn <dependency> <groupId>javax.mail</groupId> <artifactId>ma ...
- 关于网页控件设置成disabled以后,提交不到后台的问题
在开发的时候经常遇到这样的问题,就是需要设置某个控件不可编辑,这个控件可能是一个input文本框,可能是一个select下拉列表 遇到这样的问题,一般有两种处理方法 第一种是将input 控件添加 d ...
- lua 使用
根据公司自身业务需要,总结常用到的lua语法 Lua中的string库 链接:http://www.jb51.net/article/57613.htm string.len(s) ...
- ReactiveCocoa源码拆分解析(一)
(整个关于ReactiveCocoa的工程可以在https://github.com/qianhongqiang/QHQReactive下载) ReactiveCocoa的介绍我就不说了,可以自行百度 ...
- ORA-14402: 更新分区关键字列将导致分区的更改
默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改.這種情況可以通過開啟表 ...
- Android使用Unity导致Activity被销毁的解决办法
由于需要在Android中使用Unity(Android的Activity会继承Unity提供的UnityPlayerActivity),可能是第三方的原因退出Unity后就导致Android整个应用 ...
- Caffe学习系列(14):Caffe代码阅读
知乎上这位博主画的caffe的整体结构:https://zhuanlan.zhihu.com/p/21796890?refer=hsmyy Caffe 做train时的流程图,来自http://caf ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...