hibernate实践 附QBC检索方式常用的设定查询条件的方法

【WRFDA教程第四期】雷达数据同化(Radar Data Assimilation) 雷达数据同化(Radar Data Assimilation) 阅读详情

 * EL使用(取name中文乱码怎么办,set还有范围是怎么回事)

1.hibernate设计模式的应用(程序开发范例宝典 实例379)
通用数据库模块
Hibernate.java
package mrgf;

import java.util.List;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;

public class Hibernate {
    public Hibernate() {
    }

    // 在静态快中加载Hibernate配置信息
    private static SessionFactory sessionFactory;
    static {
        try {
            Configuration config = new Configuration().configure();
            sessionFactory = config.buildSessionFactory();
        } catch (Exception e) {
            System.out.println("------在初始化hibernate时抛出异常,内容如下:");
            e.printStackTrace();
        }
    }

    private Session session = null;
    private Transaction tx = null;

    //检索对象
    public List query(String birthday) {
        // 打开Session,开启事物
        session = sessionFactory.openSession();
        tx = session.beginTransaction();
        //  检索数据
        List result = null;
        try {
            Query query = session.createQuery("from Record where birthday>=:birthday");
            query.setString("birthday",birthday);
            result = query.list();
        } catch (Exception e) {
            System.out.println("------在检索对象时抛出异常,内容如下:");
            e.printStackTrace();
        }
        // 提交事物,关闭Session
        tx.commit();
        session.close();
        return result;
    }

}
还有Record.java Record.hbm.xml hibernate.cfg.xml
index.jsp(使用)
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ page import="mrgf.*" %>
<html>
<head>
<title>
应用HQL检索方式查询数据
</title>
</head>
<body bgcolor="#ffffff">
<table width="490"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>&nbsp;</td>
    <td><table width="100%" background="image/bg.jpg" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr align="center">
        <td>员工档案表</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr align="center">
        <td><table width="96%"  border="1" cellspacing="0" cellpadding="4">
          <tr align="center">
            <td>编号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>出生日期</td>
            <td>民族</td>
            <td>学历</td>
            <td>籍贯</td>
            <td>家庭住址</td>
          </tr>
          <%
          Hibernate hibernate = new Hibernate();
          String birthday="1979-5-21";
          List l=hibernate.query(birthday);
          Iterator it=l.iterator();
          while(it.hasNext()){
            Record r=(Record)it.next();

          %>
          <tr align="center">
            <td><%=r.getId() %></td>
            <td><%=r.getName() %></td>
            <td><%=r.getSex() %></td>
            <td><%=r.getBirthday() %></td>
            <td><%=r.getNation() %></td>
            <td><%=r.getSchoolAge() %></td>
            <td><%=r.getNativePlace() %></td>
            <td><%=r.getAddress() %></td>
          </tr>
          <%
          }
          %>
        </table></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>


2.应用QBC检索方式查询 (实例380)
Hibernate提供了一套符合Java编程习惯的API,即QBC(Query By Creteria)检索方式,
主要邮Criteria接口,Criterion接口和Expression类组成.优点是支持动态查询,在编译时就进行解析,容易排除错误;缺点是没有HQL功能强大.

Hibernate.java
package mrgf;

import java.util.List;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.MatchMode;
import java.util.Map;
import java.util.HashMap;

public class Hibernate {
    public Hibernate() {
    }
    // 在静态快中加载Hibernate配置信息
    private static SessionFactory sessionFactory;
    static {
        try {
            Configuration config = new Configuration().configure();
            sessionFactory = config.buildSessionFactory();
        } catch (Exception e) {
            System.out.println("------在初始化hibernate时抛出异常,内容如下:");
            e.printStackTrace();
        }
    }
    private Session session = null;
    private Transaction tx = null;
    //检索对象
    public List query() {
        // 打开Session,开启事物
        session = sessionFactory.openSession();
        tx = session.beginTransaction();
        //  检索数据
        Criteria criteria = session.createCriteria(Record.class); //Record在my.bean里面
        criteria.addOrder(Order.desc("id"));  //降序
        Criterion criterion = Expression.eq("sex", "男"); //条件,有这句就不用select来查询了
        criteria.add(criterion); //把条件给criteria
        List result = criteria.list();  
//criteria相当于query,自己本身就是查询
        // 提交事物,关闭Session
        tx.commit();
        session.close();
        return result;
    }

}


index.jsp使用
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ page import="mrgf.*" %>
<html>
<head>
<title>
index
</title>
</head>
<body bgcolor="#ffffff">
<table width="490"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>&nbsp;</td>
    <td><table width="100%" background="image/bg.jpg" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr align="center">
        <td>员工档案表</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr align="center">
        <td><table width="96%"  border="1" cellspacing="0" cellpadding="4">
          <tr align="center">
            <td>编号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>出生日期</td>
            <td>民族</td>
            <td>学历</td>
            <td>籍贯</td>
            <td>家庭住址</td>
          </tr>
          <%
          Hibernate hibernate = new Hibernate();
          List l=hibernate.query();
          Iterator it=l.iterator();
          while(it.hasNext()){
            Record r=(Record)it.next();

          %>
          <tr align="center">
            <td><%=r.getId() %></td>
            <td><%=r.getName() %></td>
            <td><%=r.getSex() %></td>
            <td><%=r.getBirthday() %></td>
            <td><%=r.getNation() %></td>
            <td><%=r.getSchoolAge() %></td>
            <td><%=r.getNativePlace() %></td>
            <td><%=r.getAddress() %></td>
          </tr>
          <%
          }
          %>
        </table></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>

补:

请看精通hibernate学习笔记(8)[检索方式] 
http://blog.youkuaiyun.com/xiangrong530/archive/2008/01/11/2037172.aspx


QBC检索方式常用的设定查询条件的方法
查询条件         设定方法       方法说明
单条件等于       Expression.eq(String attribute,String value)        equal,两个参数依次为要检索属性和检索值
多条件等于       Expression.allEq(Map attEq Val)                       通过Map型入口参数可以同时设定多个检索条件
不等于               Expression.not(  Expression.eq())                       通过方法的联合使用实现不等于
大于                   Expression.gt(String attribute,String value)         greate-than,检索属性attribute的值大于value值 的记录
大于等于           Expression.ge(String attribute,String value)         greate-equal,检索属性attribute的值大于或者等于value值 的记录
小于                   Expression.lt(String attribute,String value)          less-than   检索属性attribute的值小于value值 的记录
小于等于           Expression.le(String attribute,String value)          less-equal,检索属性attribute的值小于或者等于 value值 的记录
空值                   Expression.isNull(String attribute)                       入口参数为要检索的属性
非空                   Expression.isNotNull(String attribute)                入口参数为要检索的属性
在列表中           Expression.in()                                                     等同于SQL语句中的IN子句
不在列表中       Expression.not(Expression.eq())                          等同于SQL语句中的NOT IN子句   
在范围内           Expression.between()                                           等同于SQL语句中的BETWEEN子句
不在范围内       Expression.not(Expression.between())                等同于SQL语句中的NOT BETWEEN子句
与                       Expression.and()                                                  等同于SQL语句中的AND
或                       Expression.or()                                                    等同于SQL语句中的OR
非                       Expression.not()                                                  等同于SQL语句中的NOT
字符串匹配       Expression.like()                                                  检索指定字符串,并可以指定匹配模式
升序排列           Order.asc(String attribute)                                    按入口参数指定的属性升序排列
降序排列           Order.desc(String attribute)                                  按入口参数指定的属性降序排列
精确匹配           MatchMode.EXACT                                          等同于SQL语句中的"LIKE 'value'"子句
包含匹配           MatchMode.ANYWHERE                                 等同于SQL语句中的"LIKE '%value%'"子句
左匹配               MatchMode.START                                           等同于SQL语句中的"LIKE 'value%'"子句
右匹配               MatchMode.END                                                等同于SQL语句中的"LIKE '%value'"子句

 

【AI Agent 记忆共享实战】【下篇】多 Agent 会话 Session 统一共享实战:全链路工程落地、采集归一、MCP 服务、私有化部署、源码级实战 中篇我们已经锁定最终最优架构方案: 非侵入式、外部旁路采集、只读归一、中心化存储、MCP 按需检索注入。摒弃「改 Agent 源码」「软链接互通」「原生 Session 互导」等不现实方案。本篇直接落地可上线、可简历复用、可个人私有化部署多 Agent 异构 Session专属采集器(Claude/CODex/DSH/OpenCode/Kimi/WorkBuddy/ 豆包)统一消息归一化解析层(解决所有 Schema 异构)增量同步、去重、时间戳对齐核心逻辑。 阅读详情

相关推荐

GD32F103程序烧录全攻略:从SWD到串口的实战指南

本文提供了GD32F103微控制器程序烧录的全面实战指南,详细介绍了SWD、JTAG和串口(ISP)三种主流下载方式。文章重点解析了在Keil MDK中使用ST-Link进行SWD下载的完整步骤,包括硬件连接、软件配置和Flash算法设置,并针对烧录过程中的常见问题提供了实用的排坑解决方案,帮助开发者高效完成程序部署。

weixin_29191669的博客 435

关于 hibernate 逻辑删除 默认查询过滤条件问题(java set 条件)

数据库表采用逻辑删除,修改表的一个字段(如:status,1:存在;2:删除)即为删除。在复杂的表关系时(如:多对一),我们要从一这一段去看多,怎么加条件。因为我之前用的是 annotation,所以可以在一的那一段的Set上加上@Where(clause="status = 1

zzf_1984的专栏 6615

RK3588零拷贝视频流水线实战:用GStreamer+Mpp实现8K硬解与DRM显示

本文深入探讨了在RK3588平台上构建零拷贝视频流水线的工程实践。通过结合GStreamer与MPP,实现了从8K视频硬解到DRM显示的全流程硬件加速,有效解决了高分辨率视频处理中的DDR带宽瓶颈问题。文章详细解析了dma-buf数据流机制、管道构建与性能优化策略,为多路视频并发处理提供了高效的系统架构解决方案。

github5actions的博客 1162

hibernate查询之条件查询

技术分析之QBC检索方式 0. QBC:Query By Criteria 按条件进行查询 1. 简单查询,使用的是Criteria接口 List<Customer> list = session.createCriteria(Customer.class).list(); for (Customer customer : list) { ...

weixin_30900589的博客 168

告别手绘!用Aseprite+Unity Tilemap,从AI生成到2D游戏地图的保姆级搭建流程

本文详细介绍了如何利用Aseprite和Unity Tilemap从AI生成素材到搭建2D游戏地图的完整流程。涵盖AI生成素材的预处理、图层管理、动画制作,以及Unity中的Tilemap系统配置和性能优化技巧,帮助开发者高效创建像素风游戏地图。

weixin_29015483的博客 580

win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结

之前安装过一次VMware虚拟机,后来由于某些已遗忘原因把它卸载了,但是没有卸载完全,为以后安装留下了一些麻烦,现在根据我google很多内容总结后写下了自己的解决办法。 一些我搜的的可以用的VM12的注册码 5A02H-AU243-TZJ49-GTC7K-3C61N ZZ510-DYX47-48ERP-D6XZG-YCKU2 YV5MU-2FX5H-M841P-LZX5X-PYHX8

Jeason的博客 2万+

Hibernate条件查询的两种方式

Hibernate条件查询的两种方式

God's blog 4100

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 269

SpringDataJPA 快速入门

SpringDataJPA 介绍及使用

Demo_Null 3326

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1086

1. 如何使用扣子工作流一键生成儿童绘本(可以发到小红书,微信公众号图文等)

本文介绍了使用扣子智能体一键生成儿童绘本的工作流。用户只需输入绘本主题,系统会自动生成Markdown格式内容,可直接发布到优快云、小红书等平台,还支持推送至微信公众号草稿箱。操作步骤包括:访问扣子网站导入工作流源代码,输入主题试运行,查看实时进度和最终输出结果。工作流编辑器会显示每个节点的执行状态和耗时,支持通过"查看日志"功能回溯历史运行记录。文末附有工作流源代码下载链接。

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

【知识整理】Hibernate-QBC查询

QBC查询:QBC查询就是使用hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口。  一.QBC查询步骤:   Employee、Department持久化类代码如下:(Employee与Department为双向多对一关联关系) package com.lyn.hibernate.qbc;

qq_19891827的博客 502

【WRF-Chem】预处理工具(Preprocessors)总结

预处理工具(Preprocessors)总结

WW、forever的博客 1179

Hibernate查询方式——QBC查询方式

参考文: Hibernate查询方式汇总  http://blog.sina.com.cn/s/blog_7ffb8dd501014a6o.html  第十一章 Hibernate的查询 Query by Criteria(QBC)  http://ju.outofmemory.cn/entry/30525 Hibernate总的来说共有三种查询方式:HQL、QBC和SQL三

Sun_Rise2011的专栏 5527

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【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

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

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

Hibernate的查询方式(大全)(检索方式)OID查询+ HQL检索 +QBC检索+SQL检索

在Hibernate当中提供了多种查询方式。Hibernate一共提供了五中查询方式。 Hibernate的查询方式 1、Hibernate的查询方式:OID查询 OID检索:HIbernate根据对象的OID(主键)进行检索。 A:使用GET方法 Customer代表客户的意思 Customer customer = session.get(Customer.class,1l);//OID 检索,通过ID查询对应的对象的数据 B:使用load方法 Customer customer = session.

程序员猫爪 1705

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hibernate中QBC限定条件查询

QBC 检索主要由Criteria接口,Criterion接口,Restrictions类组成。QBC支持在运行时动态生成查询语句。 Criteria接口是个容器,通过它的add()方法向其实例中添加查询条件,查询条件由 Expression 类进行描述。 第一步,使用Session的createCriteria()方法创建一个Criteria对象,参数为要查询的持久化类。 第二步,使用Cr

万豪给给的博客 1665

hibernate中的qbc查询案例

hibernate的qbc查询 Criteria查询也叫做QBC查询(Query By Criteria),这种查询方式是Hibernate提供的“更加面向对象”的一种检索方式,说白了都是操作对象的一些查询方法来查询,因此这个查询掌握起来难度相对要大些。 本篇文章的示例代码下载地址 https://download.youkuaiyun.com/download/qq_29001539/ QBC查询方式 //...

码到家 784

Hibernate的QBC检索方式

Hibernate的QBC检索方式 一直习惯了Hibernate的HQL查询,一直也觉得挺方便,对于最近项目里出现的QBC(org.hibernate.Criteria接口)也是报着一种看看的心理,因为做j2ee这么久了,也写了一大堆HQL的工具类,起初的心理也只是看看而已Session session =HibernateSessionFactory.currentSessi...

Vicky9897的博客 241

Hibernate检索对象的方式

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

robbinBlog 1511

Hibernate 导航对象、OID、HQL、QBC、SQL检索方式

Hibernate的检索方式 一、导航对象检索 二、OID检索 三、HQL检索 四、QBC检索 五、SQL检索: 一、导航对象检索: 概述:根据已经加载的对象导航到其他的对象。例如可以根据订单的信息找到客户的相关信息 Order order = session.get(Order.Class,1l); Customer customer = order.getCustomer();...

你的调料包 358

Hibernate笔记(四)hibernate查询方式、HQL查询、QBC查询、HQL多表查询、hibernate检索策略

hibernate查询方式 1 对象导航查询 (1)根据id查询某个客户,再查询这个客户里面所有的联系人 2 OID查询 (1)根据id查询某一条记录,返回对象 3 HQL查询 (1)Query对象,写hql语句实现查询 4 QBC查询 (1)Criteria对象 5 本地sql查询 (1)SQLQuery对象,使用普通sql实现查询 对象导航查询 1 查询某个客户里面所有联系人过程,使用对象导航实现 2 代码 public class TestQuery{ Session session = n

codinglover5的博客 412

hibernate框架的查询方式QBC(二十)

四、 QBC的检索方式 Query By Criteria。条件查询中用得比较多。因为hql中做条件查询的话,写hql语句稍微有点麻烦,QBC就很方便了。 4.1 基本演示 /** * QBC的查询,基本演示 */ @Test public void run1() { Session session = HibernateUtils.getCurrentSess

csdn_kenneth的博客 412

Hibernate检索方式

Hibernate提供了几种检索方式,包括HQL,QBC,QBE。一、HQL(Hibernate Query Language)HQL查询时一种面向对象的查询,没有表,字段的概念,而是使用类,对象,属性的概念来查询所需要的信息。如果使用传统的JDBC API来查询数据,需要编写SQL语句,面向的是数据库中的表和属性,然后还要将查询结果以对象的形式放到集合中存储。Hibernate已经将数据库中的表格

bacole的博客 1510

Hibernate查询方式 QBC

QBC普遍使用于条件查询   是一种更加面向对象的查询方式 基本使用 public void test1(){ Session session = HibernateUtil.openSession(); Criteria criteria = session.createCriteria(User.class); //添加排序 ...

weixin_43014205的博客 167

QBC检索方式

**技术分析之QBC检索方式** 0. QBC:Query By Criteria  按条件进行查询 1. 简单查询,使用的是Criteria接口 List list = session.createCriteria(Customer.class).list(); for (Customer customer : list) { System.out.println(custom

wxzyzydd的博客 350
上一篇: 买书 el标签使用中
下一篇: hibenate的一对一,一对多的关联操作实践
facepp
博客等级 码龄22年 342粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值