• Hibernate简单分页


    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() + "	" + s.getSname()
    38                     + "	" + s.getAddress() + "	" + 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 }
  • 相关阅读:
    Linux启动ftp服务器530 Permission denied解决方法
    Cloudera的CDH和Apache的Hadoop的区别
    我的vm虚拟机网络设置
    本地Yum软件源安装Cloudera Manager 5
    SSH无法登陆服务器,但是可以ping通,解决方法
    Linux (CentOS)增加删除用户
    SSH创建公钥实现无密码操作失败原因
    chkconfig命令详解
    camon详细解决过程
    @修饰器
  • 原文地址:https://www.cnblogs.com/guanghe/p/6093102.html
Copyright © 2020-2023  润新知