zoukankan      html  css  js  c++  java
  • Criteria示例

    package cn.bdqn.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.criterion.Criterion;
    import org.hibernate.criterion.MatchMode;
    import org.hibernate.criterion.Order;
    import org.hibernate.criterion.Projections;
    import org.hibernate.criterion.Restrictions;
    import org.hibernate.criterion.SimpleExpression;
    import org.junit.Test;
    import org.junit.experimental.theories.suppliers.TestedOn;
    
    import cn.bdqn.bean.Dept;
    import cn.bdqn.bean.Emp;
    import cn.bdqn.util.HibernateSessionFactory;
    
    /**
     * 
     * @author Administrator Criteria 相关查询
     */
    public class CriteriaTest {
    
        // 查询所有的部门信息
        @Test
        public void test1() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            // 创建criteria对象
            Criteria criteria = session.createCriteria(Dept.class);
            // 获取集合
            List<Dept> list = criteria.list();
            for (Dept dept : list) {
                System.out.println("部门编号:" + dept.getId() + "	部门名称:"
                        + dept.getName());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询在一区的部门信息(eq)
        @Test
        public void test2() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            /*
             * //01.创建criteria对象 Criteria criteria =
             * session.createCriteria(Dept.class); //增加条件 Criterion criterion =
             * Restrictions.eq("loc", "一区"); criteria=criteria.add(criterion);
             * List<Dept> list = criteria.list();
             */
            // 02.拼接
            List<Dept> list = session.createCriteria(Dept.class)
                    .add(Restrictions.eq("loc", "一区")).list();
            for (Dept dept : list) {
                System.out.println("部门编号:" + dept.getId() + "	部门名称:"
                        + dept.getName());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询员工薪水大于2000的(gt)
        @Test
        public void test3() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.gt("salary", 4000d)).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工薪水:"
                        + emp.getSalary());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询员工薪水在2000和7000之间的员工(between)
        @Test
        public void test4() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.between("salary", 2000d, 7000D)).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工薪水:"
                        + emp.getSalary());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询不属于任何部门的员工(isNull)
        @Test
        public void test5() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.isNull("dept")).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询没有员工的部门(isEmpty)
        @Test
        public void test6() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Dept> list = session.createCriteria(Dept.class)
                    .add(Restrictions.isEmpty("emps")).list();
            for (Dept dept : list) {
                System.out.println("没有员工的部门:" + dept.getName());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 查询职位是保安的员工
        @Test
        public void test7() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.eq("job", "保安")).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    
        // 01.查询职位是保安或者保姆的员工
        @Test
        public void test8() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            List<Emp> list = session
                    .createCriteria(Emp.class)
                    .add(Restrictions.or(Restrictions.eq("job", "保安"),
                            Restrictions.eq("job", "保姆"))).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        // 02.查询职位是保安或者保姆的员工
        @Test
        public void test9() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //定义一个集合用来保存这两个职位
            List jobList=new ArrayList();
            jobList.add("保安");
            jobList.add("保姆");
            //增加条件
            List<Emp> list = session.createCriteria(Emp.class).add(Restrictions.in("job", jobList)).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        
        //查询职位是保安或者保姆再或者是保姆1的员工(disjunction适合多条件)
        @Test
        public void test10() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //增加条件
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.disjunction()
                            .add(Restrictions.eq("job", "保安"))
                            .add(Restrictions.eq("job", "保姆"))
                            .add(Restrictions.eq("job", "保姆1"))
                            ).list();
            for (Emp emp : list) {
                System.out.println("员工的职位:" + emp.getJob() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        //查询员工姓名中包含a的所有员工(like)
        @Test
        public void test11() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //增加条件
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.like("name", "%a%")).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        
        //查询员工姓名中包含a的所有员工(ilike 忽略大小写)
        @Test
        public void test12() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //增加条件
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.ilike("name", "%a%")).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        
        /*
         * 查询员工姓名中包含a的所有员工(ilike 忽略大小写) 不使用%  使用MatchModle.ANYWHERE
         * ignoreCase()这也是忽略大小写
         */
        @Test
        public void test13() {
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //增加条件
            List<Emp> list = session.createCriteria(Emp.class)
                    .add(Restrictions.ilike("name", "a",MatchMode.ANYWHERE)).list();
            for (Emp emp : list) {
                System.out.println("员工的姓名:" + emp.getName() + "	员工的部门:"
                        + emp.getDept());
            }
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
        
        /*
         * ************分页**************
         *查询员工职位是 保安 ,并且按照薪水进行降序排列(Order.desc)
         *
         */
        @Test
        public void pageList(){
            // 打开session
            Session session = HibernateSessionFactory.getSession();
            //查询总记录数的条件
            Criteria criteria = session.createCriteria(Emp.class)
            .add(Restrictions.eq("job", "保安")).setProjection(Projections.count("id"));
            //开始查询
            int counts = ((Long)criteria.uniqueResult()).intValue();
            //每页显示几条记录
            int pageSize=2;  
            //总页数
            int totalPage=(counts%pageSize==0)?(counts/pageSize):(counts/pageSize+1);
            //当前页码
            int pageIndex=3;
            //薪水降序
            criteria= session.createCriteria(Emp.class)
             .add(Restrictions.eq("job", "保安"))
             .addOrder(Order.desc("salary"));
            //开始分页
          List<Emp> list=     criteria.setFirstResult((pageIndex-1)*pageSize)
             .setMaxResults(pageSize).list();
            for (Emp emp : list) {
                System.out.println(emp.getName()+"	薪水"+emp.getSalary());
            }
            System.out.println("总记录数"+counts);
            System.out.println("总页数"+totalPage);
            System.out.println("当前页数"+pageIndex);
            // 关闭session
            HibernateSessionFactory.closeSession();
        }
    }
  • 相关阅读:
    水木清华小爬虫
    不让复制是不可能的----js获取选中文字
    [转]nonlocal和global
    LLVM和clang
    Megcup2017 Dogfood
    史莱姆自爆问题
    前端颜色表
    [转]论文十诫
    返利网盈利模式
    事务的四个属性ACID
  • 原文地址:https://www.cnblogs.com/go4mi/p/5564683.html
Copyright © 2011-2022 走看看