当前位置:必发365电子游戏 > Web前端 > 必发365电子游戏查询所有学生信息(Criteria)
必发365电子游戏查询所有学生信息(Criteria)
2019-12-19

在Hibernate中有生龙活虎种查询语句是Criteria查询(QBC查询卡塔尔国,几最近呢 大家就贰个个的事无巨细的跟我们协同索求Criteria语句的连带知识点

案例前的策动

 

//插入测试数据,构建数据库
    public static void insertInfo(){
        //获取Session 
        Session session=HibernateUtil.currentSession();

        //开启事务
        Transaction tx = session.beginTransaction();

        //构建班级
        Grade grade=new Grade("超级无敌宇宙班","炒鸡不错");
        //构建第二个班级
        Grade grade2=new Grade("超级班","很不错");
        //构建学生
        Student stu1=new Student("高冷小伙3","男");
        Student stu2=new Student("高冷小伙4","女");
        //指定关系
        grade.getStus().add(stu1);
        grade.getStus().add(stu2);
        //保存班级
        session.save(grade);
        session.save(grade2);
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

必发365电子游戏, 

 

案例生龙活虎:查询全部学员音讯(Criteria卡塔尔(قطر‎

//使用Criteria语句查询所有学生信息
    public static void selectStu(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);
        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
            System.out.println(stu.getSex());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

因而以上语句大家可以观看的询问结果如下:

 必发365电子游戏 1

 

 

案例二:查询汉子的信息(带条件查询卡塔尔(英语:State of Qatar)(Restrictions.eq(卡塔尔(英语:State of Qatar)卡塔尔

//使用Criteria语句带条件查询学生信息
    public static void selectStuWhere(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class).add(Restrictions.eq("sex", "男"));
        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
            System.out.println(stu.getSex());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

查询结果如下:

必发365电子游戏 2

 

案例三:关联合检查询,查询班级下的学童音讯(Restrictions.eq(卡塔尔卡塔尔

//查询班级为超级无敌宇宙班的班级学生信息
    public static void selectStuWhereGrade(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Grade.class).add(Restrictions.eq("gname", "超级无敌宇宙班"));
        List<Grade> list = criteria.list();
        for (Grade gra : list) {
            for(Student stu:gra.getStus()){
                System.out.println(stu.getSname());
            }
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

询问结果如图:

必发365电子游戏 3

 

案例四:关联合检查询,查询班级下的学员音讯(取小名的主意卡塔尔(قطر‎(Restrictions.eq(卡塔尔卡塔尔(قطر‎

//查询班级为超级无敌宇宙班的班级学生信息(方式二:取别名)
    public static void selectStuWhereGradeAsName(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);
        //取别名
        criteria.createAlias("grade", "g");
        Criterion criterion= Restrictions.eq("g.gname", "超级无敌宇宙班");
        criteria.add(criterion);
        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

查询结果如图

 必发365电子游戏 4

 

案例五:范围查询   查询名字是高冷小伙3和高冷小伙4的学员新闻(Restrictions.in(卡塔尔(英语:State of Qatar)卡塔尔(قطر‎

//范围查询   查询名字是高冷小伙3和高冷小伙4的学生信息
    public static void selectStuWhereName(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);
        List lists=new ArrayList();
        lists.add("高冷小伙3");
        lists.add("高冷小伙4");
        Criterion criterion= Restrictions.in("sname", lists);
        criteria.add(criterion);
        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

询问结果如图

必发365电子游戏 5

 

案例六:模糊查询,查询学生姓名中有3的学员名称(Restrictions.like(卡塔尔(قطر‎卡塔尔(英语:State of Qatar)

//模糊查询,查询学生姓名中有3的学生名称
    public static void selectStuLike(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);
        //如果是  ilike的话是不区分大小写的    
        //Criterion criterion= Restrictions.like("sname", "%3%");
        //或者是采用如下方式,则可以省略%%
        Criterion criterion= Restrictions.like("sname", "3",MatchMode.ANYWHERE);
        criteria.add(criterion);

        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

查询结果如图

必发365电子游戏 6

 

 

案例七:逻辑调节  多规格查询  查询性别为男  名字中有  3的上学的儿童消息(Restrictions.and(卡塔尔(英语:State of Qatar)卡塔尔国

//逻辑控制  多条件查询  查询性别为男  名字中有  3的学生信息
    public static void selectStuManyWhere(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);

        //条件1
        Criterion c1= Restrictions.like("sname", "3",MatchMode.ANYWHERE);
        //条件2
        Criterion c2= Restrictions.eq("sex","男");
        //整合条件  and
        Criterion criterion=Restrictions.and(c1, c2);

        criteria.add(criterion);

        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

 查询结果如图

必发365电子游戏 7

 

案例八:非空检查  查询未有学生的班级(Restrictions.isEmpty(卡塔尔(英语:State of Qatar)卡塔尔

//非空检查  查询没有学生的班级
    public static void selectNotStuGrade(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Grade.class);

        Criterion criterion=Restrictions.isEmpty("stus");

        criteria.add(criterion);

        List<Grade> list = criteria.list();
        for (Grade grade : list) {
            System.out.println(grade.getGname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

询问结果如图

必发365电子游戏 8

 

案例九:动态查询 查询  学号大于0 名字中有3的学习者新闻(Criteria.add(卡塔尔(英语:State of Qatar)卡塔尔(قطر‎

 

//动态查询 查询  学号大于0 名字中有3的学生信息
    public static void selectStuDynamic(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);

        //准备两个变量当成是前台穿过来的条件
        Integer stuno=0;
        String stuname="3";

        //动态拼接
        if(stuno!=null){
            criteria.add(Restrictions.gt("sid",stuno));
        }
        if(stuname!=null){
            criteria.add(Restrictions.ilike("sname",stuname,MatchMode.ANYWHERE));
        }

        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

查询结果如图

必发365电子游戏 9

 

案例十:排序  查询学号大于0的上学的小孩子依照学号降序排列(criteria.addOrder(卡塔尔国卡塔尔(قطر‎

 

//排序  查询学号大于0的学生按照学号降序排列
    public static void selectStuOraderby(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);

        Criterion criterion=Restrictions.gt("sid", 0);

        criteria.add(criterion).addOrder(Order.desc("sid"));


        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

询问结果如图

必发365电子游戏 10

 

案例十大器晚成:分页查询  查询第二页数据 每页突显一条记下(criteria.setMaxResults(卡塔尔(英语:State of Qatar)和criteria.setFirstResult(卡塔尔(英语:State of Qatar)卡塔尔(英语:State of Qatar)

//分页查询  查询第二页数据 每页显示一条
    public static void selectStuPage(){
        //获取session
        Session session=HibernateUtil.currentSession();
        //开启事务
        Transaction tx = session.beginTransaction();
        //使用Criteria查询
        Criteria criteria = session.createCriteria(Student.class);

        /*//显示总记录数
        Projection projection = Projections.count("sid");
        criteria.setProjection(projection);
        int count = ((Long)criteria.uniqueResult()).intValue();
        System.out.println("总记录数为:"+count);*/

        //准备两个变量
        int pageSize=1;//每页显示的条数
        int pageIndex=2;//第几页

        criteria.setMaxResults(pageSize);
        criteria.setFirstResult((pageIndex-1)*pageSize);




        List<Student> list = criteria.list();
        for (Student stu : list) {
            System.out.println(stu.getSid());
            System.out.println(stu.getSname());
        }
        //提交事务
        tx.commit();
        //关闭连接
        HibernateUtil.closeSession();
    }

 

询问结果如图

 必发365电子游戏 11

 

案例十六:使用DetachedCriteria查询超级无敌宇宙班的具备学员新闻(DetachedCriteria卡塔尔(英语:State of Qatar)

//使用DetachedCriteria查询超级无敌宇宙班的所有学生信息
    public static void detachedCriteria(){
        //获取session
        Session session=HibernateUtil.currentSession();

        //构建一个DetachedCriteria对象
        DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Student.class);
        //取别名
        detachedCriteria.createAlias("grade", "g");
        //查询
        Criterion  criterion= Restrictions.eq("g.gname", "超级无敌宇宙班");
        //绑定
        detachedCriteria.add(criterion);

        //引入session
        List<Student> list = detachedCriteria.getExecutableCriteria(session).list();

        for (Student stu : list) {
            System.out.println(stu.getSid());
            System.out.println(stu.getSname());
        }
    }

 

结果如图

必发365电子游戏 12

 

必发365电子游戏查询所有学生信息(Criteria)。 

经过上述二种艺术就大多实现了Criteria查询的常用的知识点了!