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

来源:互联网 发布:sem优化策略 编辑:程序博客网 时间:2024/05/15 15:41

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 stubCriteriaDao 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");}}


 

0 0
原创粉丝点击