Java Hibernate中的批量查询

本文介绍了Hibernate查询语言(HQL)的基本用法,包括多表查询、条件查询、分页查询等,并对比了原生SQL查询的应用场景。通过具体代码示例展示了如何使用HQL进行高效的数据操作。

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

HQL查询-hibernate Query Language(多表查询,但不复杂时使用)

Hibernate独家查询语言,属于面向对象的查询语言

  • 基本查询

    
    //1.书写hql语句
    String hql=" from Customer"; //查询所有Customer对象
    //2. 创建查询对象
    Query query=session.createQuery(hql);
    //3. 根据查询对象获得查询结果
    List<Customer> list= query.list();
    // query.uniqueResult();//接收唯一的查询结果
  • 条件查询

?号占位符


String hql=" from Customer where cust_id = ?";
Query query=session.createQuery(hql);
query.setParameter(0,1l);
Customer c=(Customer) query.uniqueResult();

命名占位符

String hql=" from Customer where cust_id = :cust_id ";
Query query=session.createQuery(hql);
query.setParameter("cust_id ",1l);
Customer c=(Customer) query.uniqueResult();
  • 分页查询
String hql=" from Customer ";
Query query=session.createQuery(hql);
query.setFirstResult(1);//起始位置
query.setMaxResults(2);//读取几个值
List<Customer> list=query.list();

Criteria查询(单表条件查询)

Hibernate自创的无语句面向对象查询

  • 基本查询
Criteria criteria=session.createCriteria(Customer.class);
List<Customer> list=criteria.list();
System.out.println(list);
  • 条件查询
Criteria criteria=session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cust_id",1l));
Customer c=(Customer) criteria.uniqueResult();
System.out.println(c);
//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
  • 分页查询
Criteria criteria=session.createCriteria(Customer.class);
criteria.setFirstResult(1);//起始位置
criteria.setMaxResults(2);//读取几个值
List<Customer> list=criteria.list();
System.out.println(list);
  • 设置查询总记录数
Criteria criteria=session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
Long count=(Long) criteria.uniqueResult();
System.out.println(count);

原生SQL查询(复杂的业务查询)

  • 基本查询
    返回数组List
        Session session = HibernateUtils.openSession();
        Transaction tx = session.beginTransaction();
        String sql="select * from cst_customer";
        SQLQuery query = session.createSQLQuery(sql);
        List<Object []> list = query.list();
        for(Object[] objs:list){
            System.out.println(Arrays.toString(objs));
        }

返回对象List

        Session session = HibernateUtils.openSession();
        Transaction tx = session.beginTransaction();
        String sql="select * from cst_customer";
        SQLQuery query = session.createSQLQuery(sql);
        query.addEntity(Customer.class);
        List<Customer> list = query.list();
        System.out.println(list);
  • 条件查询
        Session session = HibernateUtils.openSession();
        Transaction tx = session.beginTransaction();
        String sql="select * from cst_customer where cust_id = ? ";
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter(0, 1l);
        query.addEntity(Customer.class);
        List<Customer> list = query.list();
        System.out.println(list);
  • 分页查询
        Session session = HibernateUtils.openSession();
        Transaction tx = session.beginTransaction();
        String sql="select * from cst_customer limit ?,? ";
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter(0, 0);   //第一个参数表示读取位置
        query.setParameter(1, 1);   //第二个参数表示读取个数
        query.addEntity(Customer.class);
        List<Customer> list = query.list();
        System.out.println(list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值