hibernate_检索方式

Linux USB Gadget框架解析:从设备模拟到驱动开发实战 USB(通用串行总线)是现代计算机系统中应用最广泛的外设连接标准,其主从动态切换的特性使其在嵌入式系统中扮演着双重角色。与I2C、SPI等固定主从架构不同,USB设备需要同时支持主机(Host)和从机(Device)两种模式,这催生了Linux内核中独特的USB Gadget框架。该框架通过分层设计,将硬件控制器驱动(UDC)、功能逻辑(Function)和配置管理(Configfs)解耦,实现了灵活的设备模拟能力。在工程实践中,开发者可以利用Gadget框架快速实现U盘、网络适配器、串口转换器等常见USB 阅读详情

 所谓的检索方式就是查询的方式。其中查询的方式有以下几种:

<1>导航对象图检索方式:  根据已经加载的对象导航到其他对象
Customer customer = (Customer)session.get(Customer.class,1);
customer.getOrders();// 获得到客户的订单

<2>OID 检索方式:  按照对象的 OID 来检索对象
get()/load();方法进行检索.

<3>HQL 检索方式: 使用面向对象的 HQL 查询语言
Query query = session.createQuery(“HQL”);

<4>QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接口. 
Criteria criteria = session.createCriteria(Customer.class);

<5>本地 SQL 检索方式: 使用本地数据库的 SQL 查询语句
SQLQuery query = session.createSQLQuery(“SQL”);

1. HQL查询
 HQL(Hibernate Query Language) 的特点是:面向对象查询、支持方法链。使用要创建Query接口。

<1>查询所有记录:
List<Customer> list = session.createQuery("from Customer").list();
    for (Customer customer : list) {
        System.out.println(customer);
    }

<2>查询使用别名:
// 使用别名
// 别名as可以省略
/*  List<Customer> list =
    session.createQuery("from Customer  c").list();
    System.out.println(list);
*/

    // 使用别名:带参数
    /*List<Customer> list = session
                .createQuery("from Customer as c where c.cname = ?")
                .setString(0, "小沈").list();
        System.out.println(list);
    */

    // 不支持 select * from Customer写法.可以写成 select 别名 from Customer as 别名;
    List<Customer> list = session.createQuery("select c from Customer c").list();
        System.out.println(list);

<3>排序:
List<Customer> list = session.createQuery(
                "from Customer c order by c.id desc").list();
        for (Customer customer : list) {
            System.out.println(customer);
        }

<4>分页查询:
Query query = session.createQuery("from Order");
        query.setFirstResult(20);
        query.setMaxResults(10);
        List<Order> list = query.list();
        for (Order order : list) {
            System.out.println(order);
        }

<5>单个对象查询:
Customer customer = (Customer) session
                .createQuery("from Customer where cname = ?")
                .setString(0, "小明").uniqueResult();

        System.out.println(customer);

<6>参数绑定:
// 1.使用?号方式绑定
        /*Query query = session.createQuery("from Customer where cname = ?");
        query.setString(0, "小沈");
        List<Customer> list = query.list();
        System.out.println(list);*/

        /*Query query = session.createQuery("from Customer where cname = ? and cid =?");
        query.setString(0, "小沈");
        query.setInteger(1,3);
        List<Customer> list = query.list();
        System.out.println(list);*/

        // 2.使用名称的方式绑定
        Query query = session.createQuery("from Customer where cname=:name and cid=:id");
        query.setString("name", "小沈");
        query.setInteger("id", 3);
        List<Customer> list = query.list();
        System.out.println(list);

    // 3.绑定实体
    List<Order> list = session
                .createQuery("from Order o where o.customer = ?")
                .setEntity(0, customer).list();
        for (Order order : list) {
            System.out.println(order);
        }

<7>投影操作:
// 查询客户的名称:
        /*
         * List<Object> list = session.createQuery(
         * "select c.cname from Customer c").list(); System.out.println(list);
         */

        /*
         * List<Object[]> list = session.createQuery(
         * "select c.cid,c.cname from Customer c").list(); for (Object[] objects
         * : list) { System.out.println(Arrays.toString(objects)); }
         */

        List<Customer> list = session.createQuery(
                "select new Customer(cname) from Customer").list();
        System.out.println(list);

<8>模糊查询:
Query query = session.createQuery("from Customer where cname like ?");
        query.setParameter(0, "小%");
        List<Customer> list = query.list();
        System.out.println(list);

SQL多表查询:
* 连接:
* 交叉连接:
* select * from A,B;
* 内连接:查询的是两个表的交集!
* select * from A inner join B on A.字段 = B.字段;
* 隐式内连接:
* select * from A,B where A.字段 = B.字段;
* 外连接:
* 左外连接:
* select * from A left outer join B on  A.字段 = B.字段;
* 右外连接:
* select * from A right outer join B on A.字段 = B.字段;

HQL多表的查询:
* 连接:
* 交叉连接:
* 内连接:
* 隐式内连接:
* 迫切内连接:
* 左外连接:
* 迫切左外连接:
* 右外连接:

* HQL的内连接和迫切内连接区别:
* 内连接查询 :将数据封装一个List<Object[]>中.
* 迫切内连接 :将数据封装一个List<Customer>中.但是迫切内连接,得到会有重复记录 ,需要使用distinct排重.

2. QBC(Query By Criteria)

<1>查询所有
List<Customer> list = session.createCriteria(Customer.class).list();
    for (Customer customer : list) {
        System.out.println(customer);
    }

<2>排序:
List<Customer> list = session.createCriteria(Customer.class)                .addOrder(org.hibernate.criterion.Order.desc("id")).list();
    for (Customer customer : list) {
        System.out.println(customer);
    }

<3>分页
Criteria criteria = session.createCriteria(Order.class);
        criteria.setFirstResult(10);
        criteria.setMaxResults(10);
        List<Order> list = criteria.list();
        for (Order order : list) {
            System.out.println(order);
        }

<4>获取单个对象:
Customer customer = (Customer) session.createCriteria(Customer.class)
                .add(Restrictions.eq("cname", "小明")).uniqueResult();
    System.out.println(customer);

<5>带参数的查询:
/*
         * List<Customer> list = session.createCriteria(Customer.class)
         * .add(Restrictions.eq("cname", "小明")).list();
         * System.out.println(list);
         */

        List<Customer> list = session.createCriteria(Customer.class)
                .add(Restrictions.eq("cname", "小明"))
                .add(Restrictions.eq("cid", 2)).list();
        System.out.println(list);

<6>模糊查询:
Criteria criteria = session.createCriteria(Customer.class);
        criteria.add(Restrictions.like("cname", "大%"));
        List<Customer> list = criteria.list();
        System.out.println(list);

3. SQL

//SQL语句查询所有记录:
List<Object[]> list = session.createSQLQuery("select * from customer").list();
        for (Object[] objects : list) {
            System.out.println(Arrays.toString(objects));
        }

List<Customer> list = session.createSQLQuery("select * from customer")
                .addEntity(Customer.class).list();
        for (Customer customer : list) {
            System.out.println(customer);
        }
博客系统 - 系统简介与首页设计 用Bootstrap实现手机端的博客导航栏效果。 阅读详情

相关推荐

【附源码】Node.js毕业设计高校院级校友信息管理系统(Express)

首先,该系统可以提高高校对校友信息管理的效率和准确性。通过系统提供的查询功能,高校可以方便地获取校友的最新联系方式和动态,及时了解校友的发展情况,为校友提供更好的服务和支持。总之,开发高校院级校友信息管理系统将为高校提供一个高效、便捷的工具,有助于提升校友管理水平和服务质量,促进高校与校友之间的良好互动关系。通过使用前端技术HTML、CSS、JavaScript和Vue框架,结合后端技术Node.js和Express框架,以及MySQL数据库,可以实现对校友信息的快速录入、查询、修改和删除等操作。

佳愉毕设源码 892

hibernate检索方式

默认情况下hibernate查询返回的是一个个的Object[],如果查询部分字段的话,需要一个一个的去遍历赋值。HQL检索方式和本地检索方式可以使用Transformers的aliasToBean方法来返回一个结果转换器。HQL检索方式:使用面向对象的HQL(Hibernate Query Language)查询语言Query。setParameter() 绑定任意类型的参数,该方法的第三个参数显示指定Hibernate映射类型。OID检索方式 :使用OID来获取对象get()和load()方法。

Lxn2zh的博客 465

Ubuntu 20.04下大陆ARS408毫米波雷达点云数据采集与RVIZ实时可视化全流程解析

本文详细解析了在Ubuntu 20.04系统下,如何实现大陆ARS408毫米波雷达的点云数据采集与RVIZ实时可视化全流程。内容涵盖硬件连接、ROS Noetic环境搭建、CAN接口配置、数据验证及自动化脚本编写,为机器人感知、自动驾驶等领域的开发者提供了一套稳定、实用的实战方案。

bash7scripter的博客 699

Hibernate检索方式

我们在项目应用中对数据进行最多的操作就是查询,数据的查询在所有ORM框架中也占有极其重要的地位。那么,如何利用Hibernate查询数据呢?Hibernate为我们提供了多种数据查询的方式,又称为Hibernate的检索方式,主要有以下五种,我们来系统地学习一下。        1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)        2.OID检索方式。(按照对象的

lenotang的专栏 5468

ollama环境变量配置:修改ollama的数据路径(安装路径)

ollama安装模型,如果很大,会占用C盘空间,影响系统运行速度,通过设置环境变量,来改变ollama放目录的地址。

正经教主是个热衷于正经学习分享的教主。 1万+

在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战

本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 149

Hibernate的检索方式详解

[b] Hibernate提供以下几种检索对象的方式。[/b] [color=red] l 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) 2 OID检索方式。(按照对象的OID来检索对象。) 3 HQL检索方式。(使用面向对象的HQL查询语言。) 4 QBC检索方式。(使用QBC(Qurey By...

学会坚强 201

解决TexStudio编写LaTeX论文引用文献问题:正文引用处出现[?],参考文献也不显现

当我们利用LaTeX编写论文时,可能会出现引用参考文献时正文引用处出现?号,肯能的原因及解决方案如下: 问题一 忘记在\end{document}前面放\bibliographystyle{样式}和\bibliography{参考文献bib文件名}: \bibliographystyle{plain} \bibliography{sample} 其中, LaTeX 标准选项及其样式共有以下8种: plain,按字母的顺序排列,比较次序为作者、年度和标题. unsrt,样式同plain,只是按照引用的先后

左手の明天的博客 9527

Hibernate检索对象的方式

Hibernate提供的检索对象的方式有: •导航对象图检索方式 –根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以导航到所有关联的Order对象,假如在关联级别使用 了延迟加载检索策略,那么首次执行此方法时,Hibernate会从数据库中加载关联的Order对象,否则就从缓存中取得Order对象

robbinBlog 1511

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 148

【TC3xx芯片】TC3xx芯片PFlash的ECC校验问题补充

TC3xx芯片PFlash的ECC校验问题补充

qq_36056498的博客 1153

Hibernate检索策略与检索方式

Hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用。但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大量的内存,二来会增加数据库的访问次数,使得程序的运行效率降低。为了合理的使用缓存,Hibernate提供了不同的检索策略来解决这些问题。 作用域       在说检索策略之前,先了解一下检

紫羽风的博客 3825

【调优】OpenClaw调优之模型(tokens)篇

OpenClaw用户常遇四大痛点:规则被无视、API账单暴涨、低效模型选择、记忆丢失。通过/context list命令可解析上下文组成,包括工作区配置、引导参数限制、系统提示词等关键信息。重点需关注Token消耗来源,如核心配置文件、技能工具说明等,避免静默截断。建议精简非必要内容,优化记忆机制,平衡功能与成本。该分析帮助用户减少无效操作,合理控制API支出。

海兰 990

Hibernate检索方式概述

Hibernate提供以下几种检索对象方式:1导航对象图检索方式,根据已加载的对象导航到其它对象2.OID检索方式,按照对象的OID来检索对象3.HQL检索方式,使用面向对象的HQL查询语言4.QBC检索方式,使用QBC(Query by Criteria)API来检索对象,这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口5.本地SQL检索方式,使用本地数据库的SQL查询语句...

qq_40208605的博客 402

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hibernate的五种检索方式

Hibernate的五种检索方式分别是: 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) OID检索方式。(按照对象的OID来检索对象。) HQL检索方式。(使用面向对象的HQL查询语言。) QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。) .本地SQL检索方式。(使用本地数据库的SQL查询语句。) 1、导航对象图检索方式 ...

qq_40714770的博客 1105

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Hibernate的检索方式

Hibernate提供以下几种检索对象的方式 1、导航对象图检索方式    根据已经加载的对象,导航到其他对象 2、OID检索方式    按照对象的OID来检索对象 3、HQL检索方式    使用面向对象的HQL查询语言 4、QBC检索方式    使用QBC(Qurey By Criteria) API来检索对象 5、本地SQL检索方式

游海东的技术专栏 1730

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Hibernate3入门之第四章Hibernate的检索方式

Hibernate的检索方式 Hibernate的检索方式: 检索方式:查询的方式: 导航对象图检索方式 :根据已经加载的对象导航到其他对象 Customer customer = (Customer)session.get(Customer.class,1);//得到用户的实例化对象 customer.getOrders();// 获得到客户的订单 OID 检索方式 :按照对象的 O...

SYJ_1835_LPM的博客 268

《精通Hibernate》学习(7)——Hibernate的检索方式(上)

一、Hibernate检索方式简介   Hibernate提供以下几种检索对象的方式: 导航对象图检索方式。(根据已经加载的对象,导航到其他对象。) OID检索方式。(按照对象的OID来检索对象。) HQL检索方式。(使用面向对象的HQL查询语言。) QBC检索方式。(使用QBC(Query By Criteria)API来检索对象) 本地SQL检索方式。(使用本地数

OOM 4273

Hibernate 检索方式

Hibernate提供以下几种检索方式 1.导航对象图检索方式 2.OID检索方式 3.HQL检索方式 4.QBC检索方式 它主要由Criteria接口,Criterion接口和Express类组成,它支持运行时动态生成查询语句。 Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式: 5.本地SQL检索方式

Hsuxu的专栏 867

Hibernate 检索方式

Hibernate的检索方式,主要有以下五种。         1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)         2.OID检索方式。(按照对象的OID来检索对象。)         3.HQL检索方式。(使用面向对象的HQL查询语言。)         4.QBC检索方式。(使用QBC(Qurey By Criteria) API来检索对象。)

jazywoo_在路上 942

hibernate检索方式详解

一.hibernate检索方式简介 通过前面的学习,我们能够在项目中引入hibernate支持,并对有关联的表进行配置。而在项目开发中,对数据库进行最多的操作 就是查询,接下来,将详细的介绍几种hibernate中常见的检索方式。 二.hibernate检索方式一:对象图检索方式 对象图检索方式适用于表与表之间有关系时的检索,意思是根据已加载的对象,导航到他的关联对象。利用对象之间的关系进

wonabi的博客 385

Hibernate HQL检索方式

Hibernate提供了以下几种检索对象的方式.    1) 导航对象图检方式.    2) OID()检索方式.    3) HQL(Hibernate Query Language)检索方式.    4) QBC(Query By Criteria)检索方式.    5) 本地SQL检索方式.     下面的表格为 HQL和QBC支持的各种运算. 运算类型 HQL运算符 QBC运...

唯品衣秀 206

【Hibernate】Hibernate的检索方式:OID、HQL、QBC

检索方式 1)导航对象图检索方式 customer.getOrders().iterator(); 2)OID检索方式 session.get()、load(); 3)HQL检索方式 // 创建Query对象 Query q = session.createQuery("from Customer as c where c.name=:name"); // 动态绑定

Alpha's 学习笔记 2098

Hibernate的5种检索方式

的检索方式主要有五种,包括导航对象图检索方式、OID 检索方式、HQL 检索方式、QBC 检索方式和本地 SQL 检索方式,接下来针对 Hibernate 五种检索方式进行详细讲解。

unber的博客 194
上一篇: springMVC_注解@RequestMapping
下一篇: JavaEE_面试题1
pseudonym_
博客等级 码龄10年 88粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值