hibernate_05_hibernateHQL queries and query QBC

1.HQL Description: HQL is Hibernate Query Language (Hibernate Query Language) acronym, provide more flexible and more powerful query capabilities; HQL closer to the SQL statement to query syntax. Hibernate Query Language (HQL) is an object-oriented query language similar to SQL, but not to operate on the tables and columns, but for objects and their attributes. Hibernate HQL query is translated into traditional SQL queries in order to operate the database.

HQL basic syntax:

public class HQLTest {

    @Test
    /**
     * HQL无条件查询
     */
    public void select() {
  
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        List<Customer> list = session.createQuery(" from Customer").list();

        list.forEach(System.out::println);

        tx.commit();
    }

    @Test
    /**
     * HQL别名查询
     */
    public void select2() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        List<Customer> list = session.createQuery("select c from Customer c").list();

        list.forEach(System.out::println);

        tx.commit();
    }

    @Test
    /**
     * HQL排序查询
     */
    public void sort() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        List<LinkMan> list = session.createQuery(" from LinkMan order by lkm_id desc").list();

        list.forEach(System.out::println);

        tx.commit();

    }

    @Test
    /**
     * HQL 多条件查询
     */
    public void conditionSelect() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        //按位置绑定
        /*Query query = session.createQuery(" from LinkMan where lkm_id=? and lkm_phone=?");
        query.setParameter(0,20L);
        query.setParameter(1,"2");
        List<LinkMan> list = query.list();*/


        //按名称绑定
        = Session.createQuery Query Query ( "WHERE lkm_id = LINKman from: and A = lkm_phone: B" ); 
        query.setParameter ( "A", 20L ); 
        query.setParameter ( "B", "2" ); 
        List <LINKman > List = Query.list (); 

        list.forEach (the System.out :: the println); 

        tx.commit (); 

    } 


    @Test 
    / ** 
     * HQL query query part projected field 
     * / 
    public  void select3 () { 

        the Session the session = HibernateUtils.getCurrentSession (); 
        Transaction tx = session.beginTransaction (); 

        // query a field
        // . List <Object> = session.createQuery List ( "SELECT l.lkm_id from LINKman L") List (); 

        // query a plurality of fields
         // List <Object []> = session.createQuery List ( "SELECT L .lkm_id, l.lkm_name from LINKman L ") List ();. 

        // query multiple attributes, dispensed into the object constructor parameters needed to 
        List <LinkMan> list = session.createQuery ( " select new LinkMan (lkm_id , lkm_name) from LINKman " ) .list (); 

        list.forEach (the System.out :: the println); 

        tx.commit (); 

    } 

    @Test 
    / ** 
     * HQL paging query 
     * / 
    public  void Limiter () { 

        the Session the session = HibernateUtils.getCurrentSession ();
        Transaction tx = session.beginTransaction();

        Query query = session.createQuery(" from LinkMan ");
        query.setFirstResult(0);
        query.setMaxResults(10);
        List<LinkMan> list =  query.list();

        list.forEach(System.out::println);

        tx.commit();
    }

    @Test
    /**
     * HQL分组统计查询
     */
    public void count() {

        //聚合函数的使用:count(),max(),avg(),,sum();
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        //统计查询
        //Object uniqueResult = session.createQuery(" select count(*) from LinkMan ").uniqueResult();

        //分组统计查询
        List list = session.createQuery(" select lkm_name,count(*) from LinkMan group by lkm_phone having count(*)>=2").list();

        list.forEach(System.out::println);

        tx.commit();
    }
}                            

 2.QBC Description: QBC (Query By Criteria) API provides another way to retrieve the object, which is mainly composed Criteria interfaces, Criterion Expresson classes and interfaces that support queries dynamically generated at runtime.

  1> call Session of createCriteria () method to create a Criteria object.
  2> set the query. Restrictions class provides a set of static methods used to set the query conditions,
  These static methods return Criterion instances, each instance represents a Criterion query.
  Criteria of add () method is used join query.
  3>调用Criteria的list()方法执行查询语句。该方法返回List类型的查询结果,在
  List集合中存放了符合查询条件的持久化对象。
QBC的基本语法:
 @Test
    /**
     * QBC查询所有
     */
    public void selectAll() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        Criteria criteria = session.createCriteria(LinkMan.class);
        List list = criteria.list();

        list.forEach(System.out::println);
        tx.commit();

    }

    @Test
    /**
     * QBC多条件查询
     *  =    eq
     *  >    gt
     *  >=   ge
     *  <    lt
     *  <=   le
     *  <>   ne
     *  like
     *  in
     *  and
     *  or
     */
    public void select2() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        Criteria criteria = session.createCriteria(LinkMan.class);
        criteria.add(Restrictions.eq("lkm_phone","1"));
        criteria.add(Restrictions.like("lkm_name","%1"));
        List list = criteria.list();

        list.forEach(System.out::println);
        tx.commit();

    }

    @Test
    /**
     * 离线条件查询
     */
    public void detachedSelect() {

        //在service层将多条件查询分装好 直接传入dao层进行查询

        //service层
        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(LinkMan.class);
        detachedCriteria.add(Restrictions.like("lkm_name","%1"));

        //dao层
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        Criteria criteria = detachedCriteria.getExecutableCriteria(session);
        List list = criteria.list();

        list.forEach(System.out::println);


    }

    @Test
    /**
     * QBC分页查询
     */
    public void pagingSelect() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        Criteria criteria = session.createCriteria(LinkMan.class);
        criteria.setFirstResult(0);
        criteria.setMaxResults(10);
        List list = criteria.list();

        list.forEach(System.out::println);
        tx.commit();

    }

    @Test
    /**
     * QBC排序
     */
    public void sort() {

        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();

        Criteria criteria = session.createCriteria(LinkMan.class);
        List list = criteria.addOrder(Order.desc("lkm_id")).list();

        list.forEach(System.out::println);
        tx.commit();

    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                         

Guess you like

Origin www.cnblogs.com/asndxj/p/12069326.html