Hibernate框架(15) —— Hibernate中的批量查询概述之Criteria查询

引言:

    1. 使用范围:单表查询

    2. 来源:Hibernate自创的无语句面向对象查询。

一、基本查询

public class Demo {

    @Test

    public void function() {

        //1.获得session

        Sessionsession = HibernateUtils.openSession();

        //2.打开事务

        Transaction tx = session.beginTransaction();

        //*********************************************

        //3. 执行操作

        创建criteria查询对象

        Criteria criteria = session.createCriteria(Customer.class);

        a 查询得到结果为多个,list拿到一个集合性质的结果

        List list = criteria.list();

        或                                     

        b 查询得到结果为单个,uniqueResult拿到一个

        Object uniqueResult = criteria.uniqueResult();

        //**********************************************

        //4. 提交事务

        tx.commit();

        //5.关闭资源

        session.close();

    }

}

二、条件查询

HQL语句中,不可能出现任何数据库相关的信息

gt

>=

ge

lt

<=

le

==

eq

!=

ne

in

in

between and

between

like

like

is not null

isNotNull

is null

isNull

or

or

and

and

public class Demo{

    @Test

    public void function() {

        //1.获得session

        Session session = HibernateUtils.openSession();

        //2.打开事务

        Transaction tx = session.beginTransaction();

        //*********************************************

        //3. 执行操作

        创建criteria查询对象

        Criteria criteria = session.createCriteria(Customer.class);

        添加查询对象 ==》 查询cust_id为1的Customer对象

        criteria.add(Restriction.eq(“cust_id”,1L));

       执行查询获得结果

        Customer c = (Customer)criteria.uniqueResult();

        4 打印结果

        System.out.println(c);

        //**********************************************

        //4. 提交事务

        tx.commit();

        //5.关闭资源

        session.close();

    }

}

三、分页查询

public class Demo{

    @Test

    public void function() {

        //1. 获得session

        Session session = HibernateUtils.openSession();

        //2. 打开事务

        Transaction tx = session.beginTransaction();

        //*********************************************

        //3. 执行操作

        1 创建criteria查询对象

        Criteria criteria = session.createCriteria(Customer.class);

        2 设置分页信息,相当于limit ?, ?

        criteria.setFirstResult(0);

        criteria.setMaxResults(3);

        3 执行查询

        List list = criteria.list();

        //**********************************************

        //4. 提交事务

        tx.commit();

        //5.关闭资源

        session.close();

    }

}

四、拓展:查询总记录数

public class Demo {

    @Test

    public void function() {

        //1.获得session

        Session session = HibernateUtils.openSession();

        //2.打开事务

        Transaction tx = session.beginTransaction();

        //*********************************************

        //3. 执行操作

        创建criteria查询对象

        Criteria criteria = session.createCriteria(Customer.class);

        2 设置查询的聚合函数 =》 总行数

        criteria.setProjection(Projections.rowCount());

        执行查询

        Long count = (Long)criteria.uniqueResult();

        System.out.println(count);

        //**********************************************

        //4. 提交事务

        tx.commit();

        //5.关闭资源

        session.close();

    }

}

你可能感兴趣的:(Hibernate框架)