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. Ruby基本语法规则

    1.Ruby常用数据类型 Numbers, Strings, Booleans my_num = 25 my_boollean = true (or false) my_string = " ...

  2. oracle数据库启动

    遇到个白痴问题,放假停电,回来时启动数据库,发现无法进入oracle管理员界面. 如下输入,但是显示的命令无效. [oracle@crm001 database]$ sqlplus / as sysd ...

  3. xcode7 NSAppTransportSecurity

    在Info.plist中添加  NSAppTransportSecurity 类型  Dictionary Dictionary 下添加  NSAllowsArbitraryLoads 类型 Bool ...

  4. post 之checkbox 未被选中解决方法

    第一种方法: http://cnn237111.blog.51cto.com/2359144/1293812 第二种方法(推荐): http://blog.csdn.net/xyanghomepage ...

  5. C# switch

    要开学了(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊) 做个沉默的行动者吧!(嘘嘘嘘嘘嘘嘘)今天去水题发现好多基础都不知道啊 1.   switch(控制语句) { case 常量表达式:{statement ...

  6. dp水题 序列问题 (9道)

    9道题.A了8道,A题看题解也没弄懂怎么维护m段子序列的,过一段时间再回来看看     dp试水 47:56:23 125:00:00   Overview Problem Status Rank ( ...

  7. css3 transition effect(其它效果)

    http://blog.csdn.net/jerryvon/article/details/8755548 整理了一些其它动画,用的模板为flip模板,只不过CSS3不同 /************* ...

  8. pycharm 2016 注册码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  9. Clone Graph

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  10. 【leetcode】Search a 2D Matrix

    Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This m ...