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 ...
随机推荐
- cf558c(bfs)
C. Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 通过url地址传递base64加密参数遇到的问题整理
1. base64的加密解密方法在C#的类库中就有 QueryString中的加号变成了空格问题 Server.UrlEncode(username),获取到的编码又将等于号变成了%3d; 到底改怎么 ...
- Java Io 流(输入输出流)
IO流,也就是输入和输出流,可分为字节流和字符流. 1. 字节流 (1). InputStream 输入流,用于读取文件 输入流常用API: inputStream.read() 读取一个字节 in ...
- [codevs2181]田忌赛马
[codevs2181]田忌赛马 试题描述 中国古代的历史故事"田忌赛马"是为大家所熟知的.话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金 ...
- PYTHON 自动化学习之路
一.用户交互小程序 username = 'gyc' password = 'gyc' u = input("what is you name?:") p = input(&quo ...
- 剑指Offer 二叉树中和为某一值的路径(dfs)
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路: 递归,然后深搜,因为题目定义的, ...
- Delphi中Interface接口的使用方法
示例注释(现在应该知道的): { 1.接口命名约定 I 起头, 就像类从 T 打头一样. 2.接口都是从 IInterface 继承而来; 若是从根接口继承, 可省略. 3.接口成员只能是 ...
- js之作用域和面向对象
作用域 JavaScript以函数为作用域 函数的作用域在函数未被调用之前,已经创建 函数的作用域存在作用域链,并且也是在被调用之前创建 示例一 xo = "alex"; func ...
- linux 终端全局代理设置
http://www.webupd8.org/2010/10/how-to-set-proxy-for-terminal-quick.html 即 export http_proxy='http:// ...
- 转:js清空数组
方式1,splice 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 Array[0],空数组 ...