Java Hibernate中的批量查询

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

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

  • 基本查询

    
    //1.书写hql语句
    String hql=" from Customer"; //查询所有Customer对象
    //2. 创建查询对象
    Query query=session.createQuery(hql);
    //3. 根据查询对象获得查询结果
    List 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 list=query.list();

Criteria查询(单表条件查询)

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

  • 基本查询
Criteria criteria=session.createCriteria(Customer.class);
List 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 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 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 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 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 list = query.list();
        System.out.println(list);

你可能感兴趣的:(Java,Java,Hibernate)