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简单分页的更多相关文章

  1. 【hibernate】<第一节>hibernate简单入门

    所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对应mysql的驱动类(对应jar包如图 ...

  2. JavaScript简单分页,兼容IE6,~3KB

    简介 兼容IE6+及现代浏览器的简单分页,支持同一页面多个分页. 使用 Browser <link rel="stylesheet" href="css/GB-pa ...

  3. 菜鸟学习Hibernate——简单的增、删、改、查操作

    上篇博客利用Hibernate搭建起一个简单的例子,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述如何利用Hinbernate框架实现简单的数据库操作. 1.加入junit.jar 2.新建 ...

  4. 新秀学习Hibernate——简单的增加、删、更改、检查操作

    部分博客使用Hibernate单的样例,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述怎样利用Hinbernate框架实现简单的数据库操作. 1.增加junit.jar 2.新建一个工具类H ...

  5. Hibernate中分页

    query.setFirstResult(4);query.setMaxResults(5);       这两个方法就是hibernate的分页

  6. MVC简单分页

    对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...

  7. 使用Vs2005打造简单分页浏览器(1)原创

    原文:使用Vs2005打造简单分页浏览器(1)原创 使用Vs2005打造简单分页浏览器(1)原创1引言2功能3实现过程以及关键点4总结5不足之处6其他7 代码下载 1    引言很早就有搞一个浏览器的 ...

  8. MVC001之mvcpager简单分页

    描述:用mvcpager实现简单分页功能 参考网址: http://www.cnblogs.com/iamlilinfeng/archive/2013/03/11/2951460.html http: ...

  9. vue.js 2.0实现的简单分页

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

随机推荐

  1. oracle数据库表空间扩容方法

    1. 先查询表空间在物理磁盘上存放的位置,注意使用sysdba的账号登陆. SELECT tablespace_name, file_id, file_name, ), ) total_space F ...

  2. linux 中断理解

    1.进程.线程只针对的是应用层,而内核调用.驱动没有这种概念,调用的都是内核调用里相同的函数或变量,所以应用层多个应用操作同个硬件时,特别是要加互斥操作,8250通过cs针脚决定发送数据给哪个串口 2 ...

  3. ubutu安装搜狗

    1.下载deb文件 下载32位 wget "http://pinyin.sogou.com/linux/download.php?f=linux&bit=32" -O &q ...

  4. C++中的单例模式(转)

    单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块,如系统的日志输出,G ...

  5. Java设计模式 之 工厂方法模式

    1. 使用设计模式的好处:可提高代码的重复性,让代码更容易被他人理解,保证代码的可靠性. 2. 工厂模式定义:就是创建一个工厂类来创建你需要的类,工厂模式包括工厂模式和抽象工厂模式,抽象工厂模式是工厂 ...

  6. Linux下ffmpeg的各种编解码器的安装

    首先要安装各种解码器 1.lame  tar -zxvf lame- cd lame- ./configure --enable-shared make make install 2.libogg  ...

  7. windows下C语言编程获取磁盘(分区)使用情况

    windows下编程获取磁盘(分区)使用情况 windows下编程获取磁盘(分区)使用情况 GetLogicalDriveStrings函数 使用示例 获取需要的缓冲区长度示例 获取所有驱动器号示例 ...

  8. mapReduce编程之google pageRank

    1 pagerank算法介绍 1.1 pagerank的假设 数量假设:每个网页都会给它的链接网页投票,假设这个网页有n个链接,则该网页给每个链接平分投1/n票. 质量假设:一个网页的pagerank ...

  9. 3.6---双栈排序(CC150)

    答,课本上的方法比较好. public static Stack<Integer> sort(Stack<Integer> s) { Stack<Integer> ...

  10. MySQL表结构及数据的备份

    1.Navicat for MySQL 选择要保存的表,右键转储SQL文件,导出的sql文件中包括表的定义和表的数据两部分. 其他办法: (1) create table dust select * ...