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

本文介绍了Hibernate框架中使用Criteria进行批量查询的方法,包括基本查询、条件查询、分页查询以及查询总记录数的实现。Criteria提供了一种面向对象的方式来执行数据库操作,避免了直接使用SQL语句,使得代码更加简洁和易于维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:

    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

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<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. 执行操作

        创建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();

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值