• hibernate-criteria查询


    Criteria查询是Hibernate提供的一种查询方式

    下面就一个员工和部门来列一个总体的例子

    package Test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.Criterion;
    import org.hibernate.criterion.MatchMode;
    import org.hibernate.criterion.Restrictions;
    import org.junit.Test;
    
    import com.sun.org.apache.regexp.internal.recompile;
    
    import entity.Dept;
    import entity.Emp;
    
    import util.HibernateSessionFactory;
    
    public class TestCriteria {
        /*
        通过criteria查询部门信息
        */
        @Test
        public void test1(){
            Session session =HibernateSessionFactory.getSession();
            Criteria criteria = session.createCriteria(Dept.class);
            List<Dept> list=criteria.list();
            System.out.println("通过criteria查询部门信息");
            for (Dept dept : list) {
                System.out.println(dept.getDname());
            }
        }
        
        /**
         * 查询位置在二楼的部门
         */
        @Test
        public void test2(){
            Session session =HibernateSessionFactory.getSession();
            Criteria criteria = session.createCriteria(Dept.class);
                    //.add(Restrictions.eq("loc", "二楼"));
            Criterion criterion = Restrictions.eq("loc", "二楼");
            criteria.add(criterion);
            List<Dept> list=criteria.list();
            System.out.println("查询位置在二楼的部门");
            for (Dept dept : list) {
                System.out.println(dept.getDname()+"	"+dept.getLoc());
            }
            
        }
        
        /**
         * 查询工资高于2000元的员工
         */
        @Test
        public void test3(){
            Session session =HibernateSessionFactory.getSession();
            Criteria criteria = session.createCriteria(Emp.class)
                    .add(Restrictions.gt("sal", 2000D));
            
            List<Emp> list=criteria.list();
            System.out.println("查询工资高于2000元的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getSal());
            }
            
        }
        
        /**
         * 查询不属于任何部门的员工
         */
        @Test
        public void test4(){
            Session session =HibernateSessionFactory.getSession();
            Criteria criteria = session.createCriteria(Emp.class)
                    .add(Restrictions.isNull("dept"));
            
            List<Emp> list=criteria.list();
            System.out.println("查询不属于任何部门的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getSal());
            }
            
        }
        
        /**
         * 查询职位是“MANAGER”的员工
         */
        @Test
        public void test5(){
            Session session =HibernateSessionFactory.getSession();
            Criteria criteria = session.createCriteria(Emp.class)
                    .add(Restrictions.eq("job", "MANAGER"));
            
            List<Emp> list=criteria.list();
            System.out.println("查询职位是“MANAGER”的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getJob());
            }
            
        }
        /**
         * 查询职位是“MANAGER”或“CLERK”的员工
         */
        @Test
        public void test6(){
            Session session =HibernateSessionFactory.getSession();
            List<String> joblist=new ArrayList<String>();
            joblist.add("MANAGER");
            joblist.add("CLERK");
            Criteria criteria = session.createCriteria(Emp.class)
                    .add(Restrictions.in("job", joblist));
            
            List<Emp> list=criteria.list();
            System.out.println("查询职位是“MANAGER”或“CLERK”的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getJob());
            }
            
        }
        /**
         * 查询工资在2000到5000元之间的员工
         */
        @Test
        public void test7(){
            Session session =HibernateSessionFactory.getSession();
            
            Criteria criteria = session.createCriteria(Emp.class)
                    //.add(Restrictions.ge("sal", 2000D))
                    //.add(Restrictions.le("sal", 5000D));
                    .add(Restrictions.between("sal", 2000D, 5000D));
            List<Emp> list=criteria.list();
            System.out.println("查询工资在2000到5000元之间的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getSal());
            }
            
        }
        /**
         * 查询姓名中包括 “s”的员工
         */
        @Test
        public void test8(){
            Session session =HibernateSessionFactory.getSession();
            
            Criteria criteria = session.createCriteria(Emp.class)
                    //.add(Restrictions.like("ename", "%s%").ignoreCase());//忽略大小写
                    .add(Restrictions.like("ename", "s", MatchMode.ANYWHERE).ignoreCase());
            List<Emp> list=criteria.list();
            System.out.println("查询姓名中包括 “s”的员工");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getSal());
            }
            
        }
        
        /**
         * 查询职位是“analyser”或“accountant”的员工
         */
        @Test
        public void test9(){
            Session session =HibernateSessionFactory.getSession();
            
            Criteria criteria = session.createCriteria(Emp.class)
                    //两个or
                    //.add(Restrictions.or(Restrictions.eq("job", "CLERK"), 
                            //Restrictions.eq("job", "SALESMAN")));
                    //三个
                    .add(Restrictions.disjunction()
                            .add(Restrictions.eq("job", "SALESMAN"))
                            .add(Restrictions.eq("job", "CLERK"))
                            .add(Restrictions.eq("job","MANAGER"))
                            );
            List<Emp> list=criteria.list();
            System.out.println("查询职位是“analyser”或“accountant”的员工--几种方法");
            for (Emp emp : list) {
                System.out.println(emp.getEname()+"	"+emp.getSal()+"	"+emp.getJob());
            }
            
        }
        
        /**
         * 查询没有员工的部门
         */
        @Test
        public void test10(){
            Session session =HibernateSessionFactory.getSession();
            
            Criteria criteria = session.createCriteria(Dept.class)
                    .add(Restrictions.isEmpty("emps"));
            List<Dept> list=criteria.list();
            System.out.println(" 查询没有员工的部门");
            for (Dept dept : list) {
                System.out.println(dept.getDname());
            }
            
        }
        
    }
  • 相关阅读:
    bootstrap treevie只展开一个节点,关闭其他节点
    Java后端校验-使用hibernate-validator校验JavaBean
    js生成Excel文件
    Databus&canal对比
    KVM安装配置笔记
    机器学习之数学基础一导数
    机器学习-线性回归
    机器学习之数学基础一统计
    Leader与Boss,技术leader与管理者
    php递归获取无限分类菜单
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/6036154.html
Copyright © 2020-2023  润新知