SSH框架之Hibernate的Criteria 查询、本地SQL查询、分页查询

一、Criteria 查询
SSH框架之Hibernate的Criteria 查询、本地SQL查询、分页查询_第1张图片

二、SQLQuery, 本地SQL查询
SSH框架之Hibernate的Criteria 查询、本地SQL查询、分页查询_第2张图片

三、分页查询
1、代码:

package sram.query;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

public class App_page {
    public static SessionFactory sf;
    static{
        sf = new Configuration()
            .configure()
            .addClass(Dept.class)
            .addClass(Employee.class)//测试使用
            .buildSessionFactory();
    }

    //分页查询
    //注意: 必须按照所示123的顺序书写,顺序不能调换
    @Test
    public void all(){
        Session session = sf.openSession();
        session.beginTransaction();

        Query q = session.createQuery("from Employee");

        //1.总记录数
        //这种方式也可以session.createQuery("select count(*) from Employee");
        //但是hql给我提供了一个更好的方法
        ScrollableResults scroll = q.scroll();//得到滚动的结果集
        scroll.last();//滚动到最后一行
        int totalCount = scroll.getRowNumber()+1;//得到滚动的记录数,即总记录数,但是是从0开始,所以要+1

        //2.设置分页参数
        q.setFirstResult(0);
        q.setMaxResults(2);

        //3.查询
        System.out.println(q.list());

        System.out.println("总记录数:"+totalCount);

        session.getTransaction().commit();
        session.close();

        /*
        Criteria查询和sql查询也支持上述的ScrollableResults对象进行分页查询
            Criteria criteria = session.createCriteria(Employee.class);
            session.createSQLQuery("from t_employee");
        */
    }
}

2、运行结果:
SSH框架之Hibernate的Criteria 查询、本地SQL查询、分页查询_第3张图片

你可能感兴趣的:(SSH框架之Hibernate的Criteria 查询、本地SQL查询、分页查询)