一 Query
1 使用Query對象,不需要寫sql語句捅儒,但是寫hql語句
(1)hql:hibernate query language摧扇,hibernate提供查詢語句祟剔,這個hql語句和普通sql語句很相似
(2)hql和sql語句區(qū)別:
- 使用sql語句操作表和字段
- 使用hql操作實(shí)體類和屬性
2 查詢所有hql語句
form 實(shí)體類名稱
3 Query對象使用
(1)創(chuàng)建Query對象
//1 創(chuàng)建Query對象
Query query= session.createQuery("from entity.User");
(2)調(diào)用Query對象里面的方法得到結(jié)果
//2 調(diào)用query對象里面的方法得到結(jié)果
List<User> list = query.list();
for (User user :list){
System.out.println(user);
}
HibernateQuery.java
import Utils.HibernateUtils;
import entity.User;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import java.util.List;
public class HibernateQuery {
@Test
public void QueryText(){
Transaction tx =null;
try {
Session session= HibernateUtils.getSessionObject();
tx = session.beginTransaction();
//1 創(chuàng)建Query對象
Query query= session.createQuery("from entity.User");
//2 調(diào)用query對象里面的方法得到結(jié)果
List<User> list = query.list();
for (User user :list){
System.out.println(user);
}
tx.commit();
}catch (Exception e){
e.printStackTrace();
tx.rollback();
}finally {
}
}
}
二 Criteria
1 使用這個對象查詢操作,但是使用這個對象時候芒涡,不需要寫語句柴灯,直接調(diào)用方法實(shí)現(xiàn)
2 實(shí)現(xiàn)過程
(1)創(chuàng)建Criteria
//1 創(chuàng)建Criteria
Criteria criteria= session.createCriteria(User.class);
(2)調(diào)用對象里面的方法得到結(jié)果
//2 調(diào)用對象里面的方法得到結(jié)果
List<User> list= criteria.list();
for (User user:list){
System.out.println(user);
}
HibernateQuery.java
public void CriteriaText() {
Transaction tx = null;
try {
Session session= HibernateUtils.getSessionObject();
tx= session.beginTransaction();
//1 創(chuàng)建Criteria
Criteria criteria= session.createCriteria(User.class);
//2 調(diào)用對象里面的方法得到結(jié)果
List<User> list= criteria.list();
for (User user:list){
System.out.println(user);
}
tx.commit();
}catch (Exception e){
e.printStackTrace();
tx.rollback();
}
}
三 SQLQuery
1 使用hibernate時候,調(diào)用底層sql實(shí)現(xiàn)
2 實(shí)現(xiàn)過程
(1)創(chuàng)建對象
//1.創(chuàng)建對象
SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");
(2)調(diào)用對象的方法得到結(jié)果
//2.調(diào)用方法得到結(jié)果
List<Object[]> list= sqlQuery.list();
for (Object[] objects:list){
System.out.println(Arrays.toString(objects));
}
問題:返回的list集合每部分都是數(shù)組
解決:讓返回list中每部分是對象形式
//設(shè)置數(shù)據(jù)返回到哪個實(shí)體類
sqlQuery.addEntity(User.class);
HibernateQuery.java
import Utils.HibernateUtils;
import entity.User;
import org.hibernate.*;
import org.junit.Test;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
public class HibernateQuery {
@Test
public void QueryText(){
Transaction tx =null;
try {
Session session= HibernateUtils.getSessionObject();
tx = session.beginTransaction();
//1 創(chuàng)建Query對象
Query query= session.createQuery("from entity.User");
//2 調(diào)用query對象里面的方法得到結(jié)果
List<User> list = query.list();
for (User user :list){
System.out.println(user);
}
tx.commit();
}catch (Exception e){
e.printStackTrace();
tx.rollback();
}
}
@Test
public void CriteriaText() {
Transaction tx = null;
try {
Session session= HibernateUtils.getSessionObject();
tx= session.beginTransaction();
//1 創(chuàng)建Criteria
Criteria criteria= session.createCriteria(User.class);
//2 調(diào)用對象里面的方法得到結(jié)果
List<User> list= criteria.list();
for (User user:list){
System.out.println(user);
}
tx.commit();
}catch (Exception e){
e.printStackTrace();
tx.rollback();
}
}
@Test
public void SQLQueryText(){
Transaction tx =null;
try {
Session session = HibernateUtils.getSessionObject();
tx = session.beginTransaction();
//1.創(chuàng)建對象
SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM t_user ");
//返回的list中每部分是對象形式
//設(shè)置數(shù)據(jù)返回到哪個實(shí)體類
sqlQuery.addEntity(User.class);
//2.調(diào)用方法得到結(jié)果
List<User> list= sqlQuery.list();
for (User user:list){
System.out.println(user);
}
/* //2.調(diào)用方法得到結(jié)果
List<Object[]> list= sqlQuery.list();
for (Object[] objects:list){
System.out.println(Arrays.toString(objects));
}*/
tx.rollback();
}catch (Exception e){
e.printStackTrace();
tx.rollback();
}
}
}