您的位置:首页 > 编程语言 > Java开发

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

2018-03-12 11:27 423 查看

引言:

    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<Customer> list = criteria.list();
        或                                     
        b 查询得到结果为单个,uniqueResult拿到一个
        Object uniqueResult = criteria.uniqueResult();
        //**********************************************
        //4. 提交事务
        tx.commit();
        //5.关闭资源
        session.close();
    }
}

二、条件查询

HQL语句中,不可能出现任何数据库相关的信息
gt
>=ge
lt
<=le
==eq
!=ne
inin
between andbetween
likelike
is not nullisNotNull
is nullisNull
oror
andand
public class Demo{
    @Test
    public void function() {
        //1.获得session
        Session session = HibernateUtils.openSession();
        //2.打开事务
        Transaction tx = session.beginTransaction();
        //*********************************************
        //3. 执行操作
[b]        1 创建criteria查询对象
[/b]
        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();

b7e0
    }
}

三、分页查询

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<Customer> 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. 执行操作
        1 创建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();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息