hibernate中的hql带有参数的参数语句以及二级缓存
hql帶有參數的參數語句直接寫到test方法里面
package com.hp.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.hp.bean.Cat;
import com.hp.dbconn.HibernateConn;
public class CSDao {
/**
*
* hql帶有參數的參數語句
*
*/
Session session = HibernateConn.getSession();
Transaction tr = session.beginTransaction();
@Test
public void getWhere(){
String hql="select c from Cat c where c.pinzhong is not null";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere1(){
String hql="select c from Cat c where c.age in (1,2,3)";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere2(){
String hql="select c from Cat c where c.age between 1 and 3";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere3(){
String hql="select c from Cat c where c.pinzhong like '%加菲%'";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere4(){
String hql="select c from Cat c where c.pinzhong like '%加菲%' or c.age>3";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere5(){
String hql="select c from Cat c where c.pinzhong is not empty";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere6(){
String hql="select c from Cat c where c.price*5<60";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere7(){
String hql="select c from Cat c where c.price>40 order by c.price desc";
List<Cat> c = session.createQuery(hql).list();
for(Cat cat:c ){
System.out.println(cat.getId()+cat.getName()+cat.getAge()
+cat.getPinzhong()+cat.getPrice());
}
}
@Test
public void getWhere8(){
String hql="select c.pinzhong from Cat c where c.price>60 group by c.pinzhong order by c.price desc";
List<Object> c = session.createQuery(hql).list();
for(Object cat:c ){
System.out.println(cat);
}
}
}
2級緩存照樣用test方法,代碼如下:
package com.hp.dao;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.hp.bean.Cat;
import com.hp.dbconn.HibernateConn;
?
public class ErjihuancunDao {
Session session = HibernateConn.getSession();
Transaction tr = session.beginTransaction();
@Test
public void getGat(){
Cat cat =(Cat)session.get(Cat.class, 1);
System.out.println(cat.getName());
Cat cat2 =(Cat)session.get(Cat.class, 1);
System.out.println(cat2.getName());
}
@Test
public void getload(){
Cat cat =(Cat)session.load(Cat.class, 1);
System.out.println(cat.getName());
Cat cat2 =(Cat)session.load(Cat.class, 1);
System.out.println(cat2.getName());
}
@Test
public void getload1(){
//兩個session 都發出load語句去查同一個數據
Cat cat =(Cat)session.load(Cat.class, 1);
System.out.println(cat.getName());
Session session2 = HibernateConn.getSession();
Cat cat2 =(Cat) session2.load(Cat.class, 1);
System.out.println(cat2.getName());
}
@Test
public void getLoad2(){
//同一個session先保存后查詢
Cat cat = new Cat(8, "公貓", "花蛤u", "測試貓", 1, 12);
session.save(cat);
Cat cat1=(Cat)session.load(Cat.class, 1);
System.out.println(cat.getName());
}
@Test
public void getHql(){
//hql語句是否支持一級緩存
String hql="from Cat";
List<Cat> l = session.createQuery(hql).list();
for(Cat cat:l){
System.out.println(cat.getName());
}
Iterator<Cat> c = session.createQuery(hql).iterate();
while(c.hasNext()){
System.out.println(c.next().getName());
}
}
@Test
public void TestCache(){
//測試二級緩存是否配置成功
Cat c =(Cat) session.get(Cat.class, 1);
System.out.println(c.getName());
session.clear();
session.close();
Session session2 = HibernateConn.getSession();
Cat c1 = (Cat)session2.get(Cat.class, 1);
System.out.println(c1.getName());
}
}
轉載于:https://www.cnblogs.com/lyh-8/p/6085679.html
總結
以上是生活随笔為你收集整理的hibernate中的hql带有参数的参数语句以及二级缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奥克斯5匹柜机通电显示f1
- 下一篇: 反射机制(1)