hibernate框架学习之数据查询(QBC)helloworld

package cn.itcast.h3.query.hql;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;

import cn.itcast.h3.query.hql.vo.StudentModel;
import cn.itcast.h3.query.hql.vo.TeacherModel;
import cn.itcast.util.HibernateUtil;

//Criteria查询(QBC)
public class CriteriaApp {
    // 简单查询
    void testSimpleCriteria() {
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(TeacherModel.class);
        List<TeacherModel> queryList = c.list();
        for (TeacherModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }

    // 查询排序
    void testCriteriaOrder() {
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(StudentModel.class);
        c.addOrder(Order.asc("age"));
        c.addOrder(Order.desc("studentName"));
        List<StudentModel> queryList = c.list();
        for (StudentModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }

    // 按条件查询
    void testCriteriaCondition() {
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(StudentModel.class);
        // 从上向下,全部默认为并且关系
        // c.add(Restrictions.like("studentName", "%虎%"));
        // c.add(Restrictions.gt("age", 22));
        // 使用关系描述条件
        // c.add(Restrictions.or(Restrictions.like("studentName", "%虎%"),
        // Restrictions.lt("age", 22)));
        // c.add(
        // Restrictions.and(
        // Restrictions.eq("aa", 123),
        // Restrictions.and(
        // Restrictions.lt("aa", 232),
        // Restrictions.eq("", 123)
        // )
        // )
        // );

        List<StudentModel> queryList = c.list();
        for (StudentModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }

    // 链式风格
    void testCriteriaLink() {
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(StudentModel.class);
        c.add(Restrictions.like("studentName", "%虎%")).add(    Restrictions.gt("age", 22));
        List<StudentModel> queryList = c.list();
        for (StudentModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }
    // 投影风格
    void testCriteriaShadow() {
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(StudentModel.class);
//        投影单个字段
//        c.setProjection(Property.forName("age"));
//        List<Integer> queryList = c.list();
//        for (Integer age : queryList) {
//            System.out.println(age);
//        }
//        投影多个字段
        c.setProjection(
            Projections.projectionList()
                .add(Property.forName("studentName"))
                .add(Property.forName("age"))
            );
        List<Object[]> queryList =c.list();
        for(Object[] objs:queryList){
            for(Object obj:objs){
                System.out.println(obj);
            }
            System.out.println("----------------");
        }
        s.close();
    }
    //多表关联查询
    void testMulQuery(){
        Session s = HibernateUtil.getSession();
        Criteria c = s.createCriteria(StudentModel.class);
        c.createAlias("teacher", "t");
        c.add(Restrictions.eq("t.teacherName", "李若亮"));
        List<StudentModel> queryList = c.list();
        for (StudentModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }
    //离线查询DetachedCriteria
    void testDetachedCriteria(){
        DetachedCriteria dc = DetachedCriteria.forClass(StudentModel.class);
        dc.createAlias("teacher", "t");
        dc.add(Restrictions.eq("t.teacherName", "雅典娜"));
        //..一路传递到数据层

        Session s = HibernateUtil.getSession();
        Criteria c = dc.getExecutableCriteria(s);
        List<StudentModel> queryList = c.list();
        for (StudentModel tm : queryList) {
            System.out.println(tm);
        }
        s.close();
    }

    public static void main(String[] args) {
        new CriteriaApp().testDetachedCriteria();
    }
}

原文地址:https://www.cnblogs.com/xyhero/p/9351767.html

时间: 2024-10-19 04:10:33

hibernate框架学习之数据查询(QBC)helloworld的相关文章

hibernate框架学习之数据查询(QBC)

lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 ?获取Session对象 ?初始化Criteria对象(使用Session对象创建) ?由Session对象创建 ?传入要查询的数据模型类 ?添加各种查询条件 ?执行查询返回结果(返回单条数据或集合数据) lQBC查询格式非常简单,更符合编程人员的习惯 ?Criteria对象用于由Session对象创建,传入要查询的PO类 ?Criteria c = s.createC

hibernate框架学习之数据查询(HQL)helloworld

package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import cn.itcast.h3.hql.vo.StudentModel; import cn.itcast.h3.hql.vo.TeacherModel; import cn.itcast.h3.util.HibernateUtil; public class HQLApp {

Hibernate框架学习(五)——批量查询(概述)

一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能出现任何数据库相关的信息 1)?占位符 2)命名占位符 3.分页查询 二.Criteria查询(单表条件查询) Hibernate自创的无语句,面向对象查询 1.基本查询 2.条件查询: SQL中的表示 Criteria中的表示 > gt >= ge < lt <= le == eq

MySQL基础学习之数据查询

一般查询 SELECT * FROM 表名 SELECT 属性名  FROM  表名 条件查询 SELECT 属性名 FROM 表名  WHERE 条件表达式 查询数据值1,数据值2的表单 SELECT *  FROM  表名  WHERE  属性名 [NOT] IN(数据值1,数据值2....) 查询数值1,数据2的表单 SELECT *  FROM  表名  WHERE  属性=值  AND 属性1=值1 查询数值1到数值2之间的表单 SELECT *  FROM  表名  WHERE  属

j2ee开发之hibernate框架学习笔记

hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换存在着转换问题->orm,对象和关系的一种映射 3.框架:解决一种问题的方案集合! 4..配置文件 Xxx.cfg.xml  主配置文件 xxx.hbm.xml映射文件: 映射基础 普通属性 主键 集合属性 关联关系:一对多  多对一 多对多  一对一 继承结构 5.其他特性:数据库连接池  懒加载

hibernate 框架学习笔记---网上摘抄的一个非常好的例子

编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao.查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考. 首先定义接口泛型DAO接口 GenericDao package com.th.huz; import java.io.Serializable;import java.util.Collection;import java.util.Iterator;import java.uti

二、框架学习 (一)Hibernate框架学习 (2)Hibernate概念和api使用

目录 1 实体类编写规则 2 hibernate主键生成策略 3 实体类操作 (1)crud操作 (2)实体类对象状态 4 hibernate的一级缓存 5 hibernate的事务操作 (1)事务代码规则写法 6 hibernate其他的api(查询) 正文 实体类编写规则 1 实体类里面属性是私有的 2 私有属性使用公开的set和get方法操作. 3 要求实体类有属性作为唯一值(一般使用id值) 4 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类 (1)八个基本数据类型对应的

Hibernate框架学习(二)——api详解

一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. 1 //1.创建,调用空参构造(还没有读配置文件) 2 Configuration conf=new Configuration(); 3 //2.读取指令配置文件=>空参加载方法,加载src下的hibernate.cfg.xml文件 4 conf.configure(); 5 6 //3.读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载 7 //conf.addResource(

一级缓存 ---- Hibernate框架学习

叙:hibernate中有一个特色,即,hibernate的持久态能自动更新数据库,不需要手动设置更新操作代码,而持久态的这一特色所依据的便是hibernate的一级缓存技术.那么之前学过了hibernate的三态,现在学习一下一级缓存: hibernate的一级缓存 首先,要明白什么是缓存: 什么是缓存? 缓存:一种优化方式,将数据存储在本地,当使用到保存的数据时不必再向服务器或者终端进行请求数据的操作,直接读取本地数据即可. 然后现在了解一下hibernate的缓存: hibernate缓存