Hibernate-Criteria查询(1)

来源:互联网 发布:excel数据筛选按钮 编辑:程序博客网 时间:2024/06/06 02:44
package junit.test;import static org.junit.Assert.*;import java.util.ArrayList;import java.util.List;import hibch06.dao.HibernateSessionFactory;import hibch06.entity.Dept;import hibch06.entity.Emp;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.criterion.Restrictions;import org.junit.Test;public class Hibch06Test {    @Test    public void test() {        Session session=HibernateSessionFactory.getSession();        Criteria criteria=session.createCriteria(Dept.class);        criteria.add(Restrictions.eq("deptno", new Byte("10")));//添加查询条件        List<Dept> list=criteria.list();        for (Dept dept : list) {            System.out.println(dept.getDname());        }    }    @Test    public void test2() {        Session session=HibernateSessionFactory.getSession();        Criteria criteria=session.createCriteria(Dept.class);        criteria.add(Restrictions.eq("deptno", new Byte("10")));//添加查询条件        criteria.add(Restrictions.eq("dname", "ACCOUNTING"));//添加查询条件        Dept dept=(Dept)criteria.uniqueResult();        System.out.println(dept.getDname()+" "+dept.getLoc());    }    /*     * 查询工资高于2000的员工     */    @Test    public void test3(){        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.gt("sal",2000D))                              .list();//链式编程风格        System.out.println(list.size());    }    @Test    public void test4(){        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.between("sal",3000D,5000D))                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getSal());        }    }    /*     * 查询不属于任何部门的员工     */    @Test    public void test5(){        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.isNull("dept"))                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getSal());        }    }    /*     * 查询职务是经理的员工     */    @Test    public void test6(){        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.eq("job", "MANAGER").ignoreCase())                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getSal());        }    }    /*     * 查询职务是经理或者是销售的员工(in)     */    @Test    public void test7(){        List jobList=new ArrayList();        jobList.add("MANAGER");        jobList.add("SALESMAN");        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.in("job", jobList))//集合                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getJob()+" "+emp.getSal());        }    }    @Test    public void test7_2(){          Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.or(Restrictions.eq("job", "MANAGER"),                                      Restrictions.eq("job", "SALESMAN")))//两个条件,其中一个满足就可以了                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getJob()+" "+emp.getSal());        }    }    //再加一个“CLERK”,当有多个条件进行"或"操作的时候,需使用Restrictions.disjunction()方法    @Test    public void test7_3(){        Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                       .add(Restrictions.disjunction()                               .add(Restrictions.eq("job", "MANAGER"))                               .add(Restrictions.eq("job", "SALESMAN"))                               .add(Restrictions.eq("job", "CLERK"))                                                              )                       .list();    }    /*     * 查询名字包含“S”的员工     *      */    @Test    public void test8(){            Session session=HibernateSessionFactory.getSession();        List<Emp> list=session.createCriteria(Emp.class)                              .add(Restrictions.ilike("ename", "%S%"))                              .list();//链式编程风格        for (Emp emp : list) {            System.out.println(emp.getEname()+" "+emp.getJob()+" "+emp.getSal());        }    }    /*     * 查询没有员工的部门     */    @Test    public void test9(){        Session session=HibernateSessionFactory.getSession();        List<Dept> list=session.createCriteria(Dept.class)                .add(Restrictions.isEmpty("emps"))                .list();        for (Dept dept : list) {            System.out.println(dept.getDname());        }    }}
0 0
原创粉丝点击