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 ...
随机推荐
- Access应用笔记<三>
在搭了一个数据库后,买了一本<让excel飞>,里面有提及access 经过研究之后,发现access+excel的结合确实能解决我的大部分难题,并且可以做得更好. 比较好的方法是, ac ...
- Mac Pro 安装 Adobe Photoshop CC for mac V2014 破解版
一.下载 Photoshop CC for mac V2014 原版(.dmg 文件): 百度网盘下载1 百度网盘下载2 百度网盘下载3 百度网盘下载4 百度网盘下载5 百度网盘下载6 百度网盘下载7 ...
- javascript高级程序设计---Event对象二
鼠标事件 事件种类 鼠标事件指与鼠标相关的事件,主要有以下一些. (1)click事件 click事件当用户在Element节点.document节点.window对象上,单击鼠标(或者按下回车键)时 ...
- Keepalived高可用集群介绍
1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...
- IoC模式
1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它.下面看一个 ...
- DP~数塔(hrbustoj1004)
aaarticlea/bmp;base64,iVBORw0KGgoAAAANSUhEUgAAAtQAAAPgCAYAAAASsev/AAAgAElEQVR4nOzdf4w0x33n9/4rQP4L8s
- 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理
导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...
- Android中加载位图的方法
Android中加载位图的关键的代码: AssetManager assets =context.getAssets(); //用一个AssetManager 对象来从应用程序包的已编译资源中为工程加 ...
- [COJ0528]BJOI幸运数
[COJ0528]BJOI幸运数 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试 ...
- [codevs1154][COJ0177][NOIP2006]能量项链
[codevs1154][COJ0177][NOIP2006]能量项链 试题描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这 ...