Hibernate查詢—利用Criteria完成表的查詢操作

Hibernate 利用Criteria完成表的查詢操作

1. Navicat中創建hibdb數據庫並設計department表和user

 

1department

 

2)users

 

外鍵

 

2. myeclipseDB Browser窗格中創建與數據庫hibdb的連接;

3. 爲創建的Java工程添加hibernate的支持;

4. MyEclipseDB Browser窗格中利用Hivernate反向工程(Hibernate Reverse Engineering)生成class表和student表的映射文件及POJO類。

(注第23、4步驟可以參考我的其它幾篇文章)

5. 創建測試類

1)CritiriaDao.java

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import com.HibernateSessionFactory;
import com.entity.Department;
import com.entity.Users;

public class CriteriaDao {
	public void seDname(String dname){
		Session session = HibernateSessionFactory.getSession();
		//根據班級名稱查詢department表
		Criteria criteria = session.createCriteria(Department.class);
		criteria.add(Restrictions.eq("depName", dname));
		criteria.setMaxResults(20);
		List result = criteria.list();
		Iterator it = result.iterator();
			while(it.hasNext()){
				Department dep = (Department)it.next();
				System.out.println("班級id:"+dep.getDepId()+"    "+"班級名稱:"+dep.getDepName());
			}
			session.close();
	}
	
	public void seSname(String sname){
		//根據學生姓名模糊查詢user表
		Session session = HibernateSessionFactory.getSession();
		Criteria criteria = session.createCriteria(Users.class);
		criteria.add(Restrictions.like("usrDesc", sname,MatchMode.ANYWHERE));
		criteria.setMaxResults(20);
		List result2 = criteria.list();
		Iterator it2 = result2.iterator();
			while(it2.hasNext()){
				Users user = (Users)it2.next();
				System.out.println("姓名:"+user.getUsrDesc()+"  年齡:"+user.getAge()+"  班級:"+user.getDepartment().getDepName());
			}
			session.close();
	}
	
	public void seExact(String sname){
		//根據學生姓名精確查詢user表
		Session session = HibernateSessionFactory.getSession();
		Criteria criteria = session.createCriteria(Users.class);
		criteria.add(Restrictions.eq("usrDesc", sname));
		criteria.setMaxResults(20);
		List result3 = criteria.list();
		Iterator it3 = result3.iterator();
			while(it3.hasNext()){
				Users user = (Users)it3.next();
				System.out.println("姓名:"+user.getUsrDesc()+"  年齡:"+user.getAge()+"  班級:"+user.getDepartment().getDepName());
			}
			session.close();
	}
	
	public void seCombine(String usrDesc,int age){
		//組合查詢
		Session session = HibernateSessionFactory.getSession();
		Criteria criteria = session.createCriteria(Users.class);
		criteria.add(Restrictions.eq("usrDesc", usrDesc)).add(Restrictions.eq("age", age));
		List result4 = criteria.list();
		Iterator it4 = result4.iterator();
			while(it4.hasNext()){
				Users user = (Users)it4.next();
				System.out.println("姓名:"+user.getUsrDesc()+"  年齡:"+user.getAge()+"  班級:"+user.getDepartment().getDepName());
			}
			session.close();
	}
	
	public void seDep(String depName){
		//查詢某個班級的學生
		Session session = HibernateSessionFactory.getSession();
		Criteria criteria = session.createCriteria(Department.class);
		criteria.add(Restrictions.eq("depName", depName));
		List result5 = criteria.list();
		Iterator it5 = result5.iterator();

		while(it5.hasNext()){
			Department d = (Department)it5.next();
			Set set = d.getUserses();
			Iterator its = set.iterator();
			while(its.hasNext()){
				System.out.println(
						"學生姓名:"+((Users) its.next()).getUsrDesc());
			}
		}
			session.close();
	}
	
	public void seUsr(String usrDesc){
		//查詢一個學生所在的班級
		Session session = HibernateSessionFactory.getSession();
		Criteria criteria = session.createCriteria(Users.class);
		criteria.add(Restrictions.eq("usrDesc", usrDesc));
		List result6 = criteria.list();
		Iterator it6 = result6.iterator();
			while(it6.hasNext()){			
				System.out.println(((Users) it6.next()).getDepartment().getDepName());
			}
			session.close();
	}


}

2)Test1.java

public class Test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		CriteriaDao hq = new CriteriaDao();
		//根據班級名稱查詢department表
		hq.seDname("101");
		
		//根據學生姓名模糊查詢user表
		hq.seSname("li%");
		
		//根據學生姓名精確查詢user表
		hq.seExact("lili");
		
		//組合查詢
		hq.seCombine("lili", 21);
		
		//查詢某個班級的學生
		hq.seDep("101");
		
		//查詢一個學生所在的班級
		hq.seUsr("lili");

	}

}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章