5.1 准备工作

建立项目,加入jar

建立hibernate.cfg.xml

建立pojo类和对应的映射文件

5.2 建立vo类PageEntity

 1 package org.guangsoft.vo;
 2 /***
 3  * 
 4  * 定义vo封装自己需要的数据和数据库不存在映射关系
 5  * 
 6  * ***/
 7 public class PageEntity
 8 {
 9     private Integer pagenum; // 当前页数
10     private Integer pagesize; // 每页数据库量
11     private Integer maxpage; // 最大页数
12     private Integer rows; // 数据库对应的总行数
13     public Integer getPagenum()
14     {
15         return pagenum;
16     }
17     public void setPagenum(Integer pagenum)
18     {
19         this.pagenum = pagenum;
20     }
21     public Integer getPagesize()
22     {
23         return pagesize;
24     }
25     public void setPagesize(Integer pagesize)
26     {
27         this.pagesize = pagesize;
28     }
29     public Integer getMaxpage()
30     {
31         return maxpage;
32     }
33     public void setMaxpage(Integer maxpage)
34     {
35         this.maxpage = maxpage;
36     }
37     public Integer getRows()
38     {
39         return rows;
40     }
41     public void setRows(Integer rows)
42     {
43         this.rows = rows;
44     }
45 }

5.3定义分页接口

 1 package com.bjsxt.dao;
 2 import java.util.List;
 3 import com.bjsxt.pojo.Student;
 4 import org.guangsoft.vo.PageEntity;
 5 /***
 6  * 
 7  * 学生表的crud操作定义
 8  * 
 9  * ***/
10 public interface StudentDao
11 {
12     /***
13      * 
14      * 定义分页方法
15      * 
16      * 
17      * 
18      * ***/
19     public List<Student> selectStudentOfPage(PageEntity pe);
20     /**
21      * 
22      * 获得总行数
23      * 
24      * ***/
25     public Long selectCountRows();
26 }

5.4建立接口的实现类

 1 package org.guangsoft.dao.impl;
 2 import java.util.List;
 3 import org.hibernate.Criteria;
 4 import org.hibernate.Session;
 5 import org.hibernate.SessionFactory;
 6 import org.hibernate.cfg.Configuration;
 7 import org.guangsoft.dao.StudentDao;
 8 import org.guangsoft.pojo.Student;
 9 import org.guangsogt.vo.PageEntity;
10 public class StudentDaoImpl implements StudentDao
11 {
12     /**
13      * 
14      * 通过静态代码块加载配置文件
15      * 
16      * ****/
17     static SessionFactory sf = null;
18     static
19     {
20         // 1 创建Configuration对象,用来加载hibernate的配置文件
21         Configuration cfg = new Configuration();
22         // 2加载配置文件
23         cfg.configure("hibernate.cfg.xml");
24         // 3通过cfg构造一个会话工厂对象
25         sf = cfg.buildSessionFactory();
26     }
27     @Override
28     public List<Student> selectStudentOfPage(PageEntity pe)
29     {
30         // TODO Auto-generated method stub
31         /*
32          * String hql="from Student";
33          * 
34          * //创建Query对象
35          * 
36          * Session session=sf.openSession();
37          * 
38          * Query q=session.createQuery(hql);
39          * 
40          * //设置分页参数
41          * 
42          * q.setMaxResults(pe.getPagesize()); //每页数据量
43          * 
44          * //查询的起始位置
45          * 
46          * q.setFirstResult((pe.getPagenum()-1)*pe.getPagesize());
47          * 
48          * 
49          * 
50          * return q.list();
51          */
52         Session session = sf.openSession();
53         // 创建Criteria对象,用来实现标准的对象查询
54         Criteria c = session.createCriteria(Student.class);
55         // 设置分页参数
56         c.setMaxResults(pe.getPagesize()); // 每页数据量
57         // 查询的起始位置
58         c.setFirstResult((pe.getPagenum() - 1) * pe.getPagesize());
59         return c.list();
60     }
61     @Override
62     public Long selectCountRows()
63     {
64         // TODO Auto-generated method stub
65         // hql语句
66         String hql = "select count(sno) from Student";
67         Session session = sf.openSession();
68         // 如果查询的结果是单行,单列使用uniqueResult()
69         Object rows = session.createQuery(hql).uniqueResult();
70         return (Long) rows;
71     }
72 }、

5.5 建立测试类

 1 package org.guangsoft.test;
 2 import java.util.List;
 3 import org.junit.Before;
 4 import org.junit.Test;
 5 import org.guangsoft.dao.StudentDao;
 6 import org.guangsoft.dao.impl.StudentDaoImpl;
 7 import org.guangsoft.pojo.Student;
 8 import org.guangsoft.vo.PageEntity;
 9 public class TestCrud
10 {
11     // 声明Dao变量
12     StudentDao dao;
13     /***
14      * 
15      * init方法在所有加@Test注解的方法执行之前,会自动执行。
16      * 
17      * ***/
18     @Before
19     public void init()
20     {
21         dao = new StudentDaoImpl();
22     }
23     /***
24      * 
25      * 分页查询
26      * 
27      * ***/
28     @Test
29     public void testSelectStudentBySno()
30     {
31         PageEntity pe = new PageEntity();
32         pe.setPagenum(2);
33         pe.setPagesize(2);
34         List<Student> list = dao.selectStudentOfPage(pe);
35         for (Student s : list)
36         {
37             System.out.println("-----" + s.getSno() + "\t" + s.getSname()
38                     + "\t" + s.getAddress() + "\t" + s.getBirthday());
39         }
40     }
41     /**
42      * 
43      * 测试获得总行数
44      * 
45      * ***/
46     @Test
47     public void testCountRows()
48     {
49         Long rows = dao.selectCountRows();
50         System.out.println(rows);
51     }
52 }