hibernate------hql总结

Hibernate框架的HQL Hibernate框架的HQL 一、HQL是什么 1.HQL(Hibernate Query Language)是hibernate提供的一种查询语言,HQL语言和普通SQL很相似。 (1)HQL与SQL的区别: SQL:操作表和字段。 HQL:操作实体类和属性。 2.常用的HQL语句 (1)查询所有:from 实体类名称。 (2)条件查询:from 实体类名称 where 属性名称=? (2)排... 阅读详情

hibernate------hql总结

关键字: hibernate------hql总结

1. 查询整个映射对象所有字段
Java代码
  1. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段      
  2.         String hql = "from Users";      
  3.         Query query = session.createQuery(hql);      
  4.               
  5.         List<Users> users = query.list();      
  6.         for(Users user : users){      
  7.             System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());      
  8.         }      
  9.      
  10.  输出结果为:      
  11. name1 : password1 : 1     
  12. name2 : password2 : 2     
  13. name3 : password3 : 3    
//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段   
        String hql = "from Users";   
        Query query = session.createQuery(hql);   
           
        List<Users> users = query.list();   
        for(Users user : users){   
            System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());   
        }   
  
 输出结果为:   
name1 : password1 : 1  
name2 : password2 : 2  
name3 : password3 : 3  


2.查询单个字段 
Java代码
  1. //查询单个字段      
  2.         String hql = " select name from Users";      
  3.         Query query = session.createQuery(hql);      
  4.               
  5.         List<String> list = query.list();      
  6.         for(String str : list){      
  7.             System.out.println(str);      
  8.         }      
  9. 输出结果为:      
  10. name1      
  11. name2      
  12. name3    
//查询单个字段   
        String hql = " select name from Users";   
        Query query = session.createQuery(hql);   
           
        List<String> list = query.list();   
        for(String str : list){   
            System.out.println(str);   
        }   
输出结果为:   
name1   
name2   
name3  


3.查询其中几个字段
 
Java代码
  1. //查询其中几个字段      
  2.         String hql = " select name,passwd from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组      
  5.         List<Object[]> list = query.list();      
  6.         for(Object[] object : list){      
  7.             String name = (String)object[0];      
  8.             String passwd = (String)object[1];      
  9.                   
  10.             System.out.println(name + " : " + passwd);      
  11.         }      
  12. 输出结果为:      
  13. name1 : password1      
  14. name2 : password2      
  15. name3 : password3    
//查询其中几个字段   
        String hql = " select name,passwd from Users";   
        Query query = session.createQuery(hql);   
        //默认查询出来的list里存放的是一个Object数组   
        List<Object[]> list = query.list();   
        for(Object[] object : list){   
            String name = (String)object[0];   
            String passwd = (String)object[1];   
               
            System.out.println(name + " : " + passwd);   
        }   
输出结果为:   
name1 : password1   
name2 : password2   
name3 : password3  


4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
引用
//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了  
        String hql = " select new list(name,passwd) from Users";  
        Query query = session.createQuery(hql);  
        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了  
        List<List> list = query.list();  
        for(List user : list){  
            String name = (String)user.get(0);  
            String passwd = (String)user.get(1);  
              
            System.out.println(name + " : " + passwd);  
        }  
        /** 
        输出结果为: 
         name1 : password1 
        name2 : password2 
        name3 : password3 
         */ 

5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回
Java代码
  1. //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了      
  2.         String hql = " select new map(name,passwd) from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了      
  5.         List<Map> list = query.list();      
  6.         for(Map user : list){      
  7.             //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值      
  8.             //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了      
  9.             String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形      
  10.             String passwd = (String)user.get("1");      
  11.                   
  12.             System.out.println(name + " : " + passwd);      
  13.         }      
  14.         /**    
  15.         输出结果为:    
  16.          name1 : password1    
  17.         name2 : password2    
  18.         name3 : password3    
  19.          */    
//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了   
        String hql = " select new map(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了   
        List<Map> list = query.list();   
        for(Map user : list){   
            //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值   
            //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了   
            String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形   
            String passwd = (String)user.get("1");   
               
            System.out.println(name + " : " + passwd);   
        }   
        /**  
        输出结果为:  
         name1 : password1  
        name2 : password2  
        name3 : password3  
         */  

6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String hql = " select new set(name,passwd) from Users";

7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回

自定义类:
 
Java代码
  1. package com.domain;      
  2.      
  3. public class MyUser {      
  4.      
  5.     private String username;      
  6.     private String password;      
  7. //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数      
  8.     public MyUser(String username,String password){      
  9.         this.username = username;      
  10.         this.password = password;      
  11.     }      
  12.           
  13.     public String getUsername() {      
  14.         return username;      
  15.     }      
  16.     public void setUsername(String username) {      
  17.         this.username = username;      
  18.     }      
  19.     public String getPassword() {      
  20.         return password;      
  21.     }      
  22.     public void setPassword(String password) {      
  23.         this.password = password;      
  24.     }      
  25.           
  26.           
  27. }    
package com.domain;   
  
public class MyUser {   
  
    private String username;   
    private String password;   
//因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数   
    public MyUser(String username,String password){   
        this.username = username;   
        this.password = password;   
    }   
       
    public String getUsername() {   
        return username;   
    }   
    public void setUsername(String username) {   
        this.username = username;   
    }   
    public String getPassword() {   
        return password;   
    }   
    public void setPassword(String password) {   
        this.password = password;   
    }   
       
       
}  


 
Java代码
  1. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto-import默认值为true(所以auto-import属性也可以不写),自动导入了      
  2.         String hql = " select new  com.domain.MyUser(name,passwd) from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了      
  5.         List<MyUser> myUsers = query.list();      
  6.         for(MyUser myUser : myUsers){      
  7.             String name = myUser.getUsername();      
  8.             String passwd = myUser.getPassword();      
  9.             System.out.println(name + " : " + passwd);      
  10.         }      
  11.         /**    
  12.         输出结果为:    
  13.         name1 : password1    
  14.         name2 : password2    
  15.         name3 : password3    
  16.          */    
//通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto-import默认值为true(所以auto-import属性也可以不写),自动导入了   
        String hql = " select new  com.domain.MyUser(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了   
        List<MyUser> myUsers = query.list();   
        for(MyUser myUser : myUsers){   
            String name = myUser.getUsername();   
            String passwd = myUser.getPassword();   
            System.out.println(name + " : " + passwd);   
        }   
        /**  
        输出结果为:  
        name1 : password1  
        name2 : password2  
        name3 : password3  
         */  


8:条件查询
Java代码
  1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数      
  2.         String hql = "from Users where name=? and passwd=?";      
  3.         Query query = session.createQuery(hql);      
  4.         //第1种方式      
  5. //      query.setString(0, "name1");      
  6. //      query.setString(1, "password1");      
  7.         //第2种方式      
  8.         query.setParameter(0, "name1",Hibernate.STRING);      
  9.         query.setParameter(1, "password1",Hibernate.STRING);      
  10.         List<Users> list = query.list();      
  11.         for(Users users : list){      
  12.             System.out.println(users.getId());      
  13.         }     
//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数   
        String hql = "from Users where name=? and passwd=?";   
        Query query = session.createQuery(hql);   
        //第1种方式   
//      query.setString(0, "name1");   
//      query.setString(1, "password1");   
        //第2种方式   
        query.setParameter(0, "name1",Hibernate.STRING);   
        query.setParameter(1, "password1",Hibernate.STRING);   
        List<Users> list = query.list();   
        for(Users users : list){   
            System.out.println(users.getId());   
        }   
         
Java代码
  1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数      
  2.         String hql = "from Users where name=:username and passwd=:password";      
  3.         Query query = session.createQuery(hql);      
  4.         //第1种方式      
  5. //      query.setString("username", "name1");      
  6. //      query.setString("password", "password1");      
  7.         //第2种方式,第3个参数确定类型      
  8.         query.setParameter("username", "name1",Hibernate.STRING);      
  9.         query.setParameter("password", "password1",Hibernate.STRING);      
  10.         List<Users> list = query.list();      
  11.         for(Users users : list){      
  12.             System.out.println(users.getId());      
  13.         }    
//条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数   
        String hql = "from Users where name=:username and passwd=:password";   
        Query query = session.createQuery(hql);   
        //第1种方式   
//      query.setString("username", "name1");   
//      query.setString("password", "password1");   
        //第2种方式,第3个参数确定类型   
        query.setParameter("username", "name1",Hibernate.STRING);   
        query.setParameter("password", "password1",Hibernate.STRING);   
        List<Users> list = query.list();   
        for(Users users : list){   
            System.out.println(users.getId());   
        }  


Java代码
  1. //条件查询,通过setProperties设置参数      
  2.         String hql = "from Users where name=:username and passwd=:password";      
  3.         Query query = session.createQuery(hql);      
  4.         //MyUser类的2个属性必须和:username和:password对应      
  5.         MyUser myUser = new MyUser("name1","password1");      
  6.         query.setProperties(myUser);      
  7.         List<Users> list = query.list();      
  8.         for(Users users : list){      
  9.             System.out.println(users.getId());      
  10.         }    
Visual Studio Code + MCP Server + Claude Code 三件套进行 ABAP 开发 本文介绍了如何在Visual Studio Code中利用Claude Code和SAP官方提供的MCP Server进行ABAP开发。作者分享了19年ABAP开发经验,从手动编码到如今通过自然语言生成高质量代码的技术演进。详细说明了配置步骤:启用ADT MCP Server、安装Claude Code扩展、配置.claude.json文件,并验证MCP Server的14个功能。通过实例演示了如何用自然语言指令让Claude Code创建包含冒泡排序实现和单元测试的ABAP类,展示了MCP Server在 阅读详情

相关推荐

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

清影的博客 6285

hibernate之HQL

1. 什么是HQL HQL是Hibernate Query Language的缩写 2. hql和sql区别/异同 HQL SQL 类名/属性 ...

m0_60390944的博客 3034

杰理AC2005B省晶振BLE芯片实测:内部RC自校准能否取代外部晶振?

低功耗蓝牙(BLE)是物联网设备无线连接的主流方案,其射频载波对频率精度要求极高,传统设计离不开外部晶振作为参考时钟。然而晶振及其外围电路占据不少成本与PCB面积,促使芯片厂商探索省晶振方案。这类方案采用内部RC振荡器配合自校准技术,通过出厂校准与在线频率修正,将频偏压回协议允许范围。其技术价值在于降低BOM成本、简化布局,尤其适合遥控器、电子价签、Beacon等对成本敏感、连接简单的产品。本文针对杰理AC2005B这颗省晶振BLE芯片进行DEMO板实测,覆盖功耗、射频频偏、温度漂移等关键指标,验证省晶振设

weixin_34216614的博客 260

Hibernate之HQL

1.、什么是HQL? HQL是Hibernate Query Language的缩写,专属于hibernate的查询语言 2. hql和sql区别/异同 HQL SQL 类名/属性 ...

qq_59025975的博客 2456

Simulink系统仿真

1.Simulink仿真基础 Simulink的启动 在 MATLAB主窗口选择“主页”选项卡,再单击“文件”命令组的“新建命令按钮,然后从下拉菜单中选择“ Simulink Model”命令。 在 MATLAB主窗口选择“主页”选项卡,再单击“ SIMULINK”命令组中的“ Simulink”命令按钮。 在 MATLAB的命令行窗口输入 simulink,命令。 利用File→New命令,可...

qq_43131852的博客 2万+

[ 人力资源面试篇 ] HR 面试题分析详解大集合,看完直怼面试官(二)

那么在这个系列的文章中,我们聊到 HR 面谈什么?并且总结了五十个常见的人力资源面试题,在这里分享给大家。

qq_51577576的博客 1381

hibernate——HQL查询总结

hibernate——HQL查询总结HQL概述:HQL的简单查询HQL的别名查询:HQL的多态查询:HQL的排序查询:HQL的分页查询:HQL检索单个对象:HQL的条件查询:HQL使用聚集函数:HQL分组统计:HQL的投影查询: HQL概述: HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索...

程序员小哲的博客 9520

8.2 发展趋

分子泵技术正处在一个快速变革的时代,面对日益增长的应用需求和不断涌现的技术挑战,其发展呈现出多元化、智能化和高度集成化的趋势。这些发展趋势不仅代表着技术创新的方向,也预示着分子泵在未来工业体系中将要扮演的更加重要的角色。

技术工作者 118

hibernate之Hql

hibernate之HqlHql基本知识1.什么是Hql2.Hql和Sql的区别3.返回的结果集4.Hql使用占位符5.连接查询6.聚合函数7.Hql的分页对于分页的改进1.0版本2.0版本 Hql基本知识 1.什么是Hql HQL是Hibernate Query Language的缩写,提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。 2.Hql和Sql的区别 1、sql ...

what_where的博客 498

光斑定位 - MATLAB实现

光斑定位是一种常见的图像处理任务,它涉及到在图像中准确定位光斑或亮点的位置。在本篇文章中,我们将使用MATLAB来实现光斑定位的算法,并提供相应的源代码。希望本文提供的MATLAB代码和步骤能够帮助您实现光斑定位任务。通过这些代码,您可以在MATLAB环境中轻松地定位光斑,并在图像上进行可视化展示。这样,我们就完成了光斑定位算法的MATLAB实现。通过以上步骤,我们可以得到一个在光斑位置上标记的图像,从而实现了光斑的准确定位。光斑定位 - MATLAB实现。

qq_39605374的博客 764

多跳问答技术解析:从原理到金融领域实践

多跳问答(Multi-hop QA)是自然语言处理中的高级任务,要求系统通过多步推理整合分散信息来回答问题。其核心技术在于理解文档间的复杂关联,相比单跳问答需要更精细的数据集设计和模型架构。在金融、医疗等专业领域,多跳问答能有效处理如'腾讯大股东投资的港股上市公司'这类需要串联多个信息点的问题。典型实现方案包括MR-Search框架的三级检索器设计,分别处理实体召回、关系匹配和数值比较。当前最佳实践表明,结合稠密检索与稀疏检索的混合策略,配合动态路由机制,能在保持较高精度的同时控制计算成本。这类技术在金融风

weixin_42566072的博客 607

Hibernate之HQL查询

一、Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 HQL 查询语言 QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接口.

无羁之风的专栏 3560

把业务变化变成实时流动:SAP Event Mesh 的概念、能力与落地方法

SAP Event Mesh 是 SAP BTP 上的云消息与事件服务,通过异步事件通信实现系统解耦。核心功能包括:1)提供Topic(广播)和Queue(持久化)两种消息模式;2)支持AMQP、MQTT、REST等多种协议接入;3)作为SAP生态的事件枢纽,可与SAP Integration Suite、CAP框架等无缝集成。典型应用场景:S/4HANA业务事件驱动流程、微服务扩展、IoT设备数据上云等。相比同步调用,它能显著提升系统弹性,避免雪崩故障,特别适合需要实时性与松耦合的企业级集成。高级版本(A

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

Hibernate 之 HQL

Hibernate 之 HQLHibernate 之 HQLUtil 工具类StringUtilsPageBeanBaseDaoTestHqlTestDaoBookDaoBookDaoTest Hibernate 之 HQL 什么是 hql? HQL 是 Hibernate Query Language 的缩写 hql 和 sql 区别 / 异同 HQL ...

qq_44641053的博客 193

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

hibernate之hql

1,什么是HQL HQL是Hibernate Query Language(hibernate的查询语言)的缩写 2,HQL和SQL区别/异同 HQL SQL 操作类名/属性 操作表名/列名 区分大小写,关键字不区分大小写 不区分大小写 别名 别名 as a ?,从下标0开始计算位(hibernate5之后不支持) ?,从顺序1开始计算位置 命名参数 不支持。命名参数 面向对象的查询语言 面向结构查询语言...

weixin_55966394的博客 590

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

hibernate HQL语言

Hibernate 支持两种主要的查询方式 HQL(Hibernate Query Languge,Hibernate 查询语言)查询 是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念 HQL 是应用较为广泛的方式 Criteria 查询 又称为“对象查询”,它用面向对象的方式将构造查询的过程做了封装 为什么使用HQL 使用HQL 可以避免使用JDBC 查询的一些弊端 1...

weixin_45626083的博客 210

假人有限元模型

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

上一篇: DynaActionForm
下一篇: SQL常用
AngleKill
博客等级 码龄18年 20粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值