A, OID query
OID query retrieval means according to the object OID primary key
OID query:
- get (): SQL statement issued immediately returns the actual object, not query returns null
- load (): Returns the target object of a proxy object that only stores the ID value of the target object, issue SQL statements when only call other properties, can not find error
Second, the object navigation search
Object means the navigation search is already a query object to obtain its associated objects
三、HQL(Hibernate Query Language)
hibernate query language similar to SQL, but the object-oriented. Using session.creatQuery (), note that the wording does not support *
1. Simple Query
```
Query query = session.createQuery("from User");
List<User> list = query.list();
```
2. Alias inquiry
```
Query query = session.createQuery("select c from User c");
List<User> list = query.list();
```
3. Sort inquiry
```
Query query = session.createQuery("select c from User c order by user_id desc");
List<User> list = query.list();
```
4. Conditions inquiry
- Location binding, similar to JDBC is not used now
- Name Binding
Query query = session.createQuery("from User where user_code=:aaa and user_name=:bbb"); query.setParameter("aaa","11"); query.setParameter("bbb","user1"); List<User> list = query.list();
5. projection inquiry
- A single property
List<Object> list = session.createQuery("select c.user_name from User c").list(); System.out.println(list);
- More properties
List<Object[]> list = session.createQuery("select c.user_name,c.user_code from User c").list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); }
- A plurality of attributes, the encapsulated object with the builder
List list = session.createQuery("select new User(user_code,user_name) from User").list(); System.out.println(list);
6. paging query
```
Query query = session.createQuery("from User");
// 位置从 0 开始数,包含 0
query.setFirstResult(0);
query.setMaxResults(2);
List list = query.list();
System.out.println(list);
```
7. statistical inquiry
- statistics
Object o = session.createQuery("select count(*) from User").uniqueResult(); System.out.println(o);
- Packet
List<Object[]> list = session.createQuery("select user_code,count(*) from User group by user_code").list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); }
8. The multi-table query
- En: foreign key equal portions taken out
- Left Connection: All tables left, only the right to check the foreign key equal parts
- Right connection: the right side of the table all of the left outer table only search key equal parts
- En general
List<Object[]> list = session.createQuery("from User c inner join c.roles").list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); }
- En urgent
List<User> list = session.createQuery("from User c inner join fetch c.roles").list(); for (User user : list) { System.out.println(user); }
四、QBC(Query By Criteria)
QBC is mainly used in the query conditions, more object-oriented
1. Simple Query
```
List<User> list = session.createCriteria(User.class).list();
for (User user : list) {
System.out.println(user);
}
```
2. Sorting Query
```
// 添加排序
criteria.addOrder(Order.asc("user_id"));
```
3. paging query
```
// 添加分页
criteria.setFirstResult(0);
criteria.setMaxResults(2);
```
4. Conditions inquiry
- condition
= eq
> gt
>= ge
< lt
<= le
<> ne
like
in
and
or - A single condition
criteria.add(Restrictions.eq("user_name","user1"));
- Multiple criteria
criteria.add(Restrictions.eq("user_name","user1")); criteria.like(Restrictions.eq("user_code","1%"));
- D
Criteria criteria = session.createCriteria(User.class); // setProjection 设置一些聚合函数 Object o = criteria.setProjection(Projections.rowCount()).uniqueResult(); System.out.println(o);
- Offline conditions of inquiry, from the Session, add a condition, you can use the object submitted DetachedCriteria set conditions in advance on the outside, and finally bound to the session which
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); // 设置条件 detachedCriteria.add(Restrictions.eq("user_name","user1")); // 打开 session Session session = HibernateUtil.openSession(); Criteria executableCriteria = detachedCriteria.getExecutableCriteria(session); List list = executableCriteria.list(); System.out.println(list);