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.
@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();
}