HQL语句的3个小技巧

1.巧用new map

在查询表中部分字段的值时,我们可以用map来封装这些字段的值,可以提高查询效率,而且查出数据也更小,传输到页面的速度也更快。

如:查询角色时,我们只想要 id,name,和remark 这3个属性的值,我们可以用new map的方式。

查询结果是: List<Map>  ,其中map的key是as后面的字符串,map的value 是as前面的属性的值

Hql如下:

  1. String hql = "select new map(r.id as id,r.name as name ,r.remark as remark) from Role r";

注意:new map的括号里面是 :  列属性名 as 集合的key名

  1. new map(属性 as 集合键名 , 属性 as 集合键名)

2.巧用 new javaBean

在查询表中部分字段时,也可以用javaBean来封装的部分字段的值。

注意点:如果这个javaBean没有被hibernate映射过,则new 后面写全包名+类简称。

  1. //希望返回的结果是:一个JavaBean对象(这个JavaBean有被hibernate映射过)
  2. /*Query query = session.createQuery("select new Products(name,price) from Products");
  3. List<Products> list = query.list();
  4. for (Products products : list) {
  5. System.out.println(products.getName()+"="+products.getPrice());
  6. }*/
  7. //希望返回的结果是:一个JavaBean对象(这个JavaBean没有被hibernate映射过)
  8. //如果需要封装数据的JavaBean的写法使用完整版(包名+类简称),就不需要在hibernate映射
  9. Query query = session.createQuery("select new gz.zxy.entity.ProductsVO(name,price) from Products");
  10. List<ProductsVO> list = query.list();
  11. for (ProductsVO products : list) {
  12. System.out.println(products.getName()+"="+products.getPrice());
  13. }

3.巧用 concat 将个字段数据拼接

在数据查询时,我们希望查询出几个字断的拼接后的结果。如:有省、市,区3个字段,我们希望查询出的结果是:xx省xx市xx区。

使用concat就可以解决这个问题。

代码:

  1. /* concat将字段的值拼接起来,这样查询后name对应的值:xx省xx市xx区 */
  2. hql= "select concat(province,city,district) as name from Region ";
时间: 2024-10-05 22:39:30

HQL语句的3个小技巧的相关文章

&lt;python&gt;If 语句、while语句的规则和调试小技巧

If 语句的规则 1. 每一个“if 语句”必须包含一个 else. 2. 如果这个 else 永远都不应该被执行到,因为它本身没有任何意义,那你必须在 else 语句后面 使用一个叫做 die 的函数,让它打印出错误信息并且死给你看,这和上一节的习题类似,这样你 可以找到很多的错误. 3. “if 语句”的嵌套不要超过 2 层,最好尽量保持只有 1 层. 这意味着如果你在 if 里边又有了 一个 if,那你就需要把第二个 if 移到另一个函数里面. 4. 将“if 语句”当做段落来对待,其中的

数据库大师成长日记:巧用SQL语句,小技巧解决大问题!

朋友们,我们在写SQL脚本的时候,可能一些看起来不起眼的小问题.却让我们非常头疼.比如我们要写一个备份数据库的脚本,如果我们对服务器的硬盘分区和使用情况很了解,备份当然没有问题,但如果我们不知道服务器硬盘如何分区.每个分区还有多少空间可用的情况下,您写的备份语句可能就不好执行了. 下面,我就日常我们可能会碰到的一些"大问题",通过简单的SQL脚本进行实现. 查看硬盘分区与可用空间 这个通过调用master数据库下面的存储过程xp_fixeddrives很容易实现. EXEC maste

HQL语句大全

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 第 15 章 HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 15.1. 大小写敏感性问题除了Java类与属

HQL语句大全(转载)

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 第 15 章 HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. 15.1. 大小写敏感性问题除了Java类与

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)

action和servlet分离使得action代码更加纯洁,与servlet的耦合性也降低了 但是有时候却不得不访问servlet API,比如把数据放到session,application里, 更甚至于添加cookie(response.addCookie()) strust2提供了两种方式访问servlet api 伪访问 借助于ActionContext类 Map<String ,Object > getApplication() 模拟访问http application Map&l

QTP使用小技巧

一.添加固定注释 新建一TXT文档,将要添加的注释写在文档中 将文档名改为:ActionTemplate.mst 将文件放到QTP安装目录的dat文件夹中 设置好后,在QTP中每次新建一个测试就会自动添加固定的注释 二.调用外部vbs文件方法 1.将通用函数写在一个vbs文件中,以供其他脚本调用 2.调用外部VBS文件中的通用函数的方法(二选一即可),设置完后在QTP中直接使用函数名进行调用: 1)通过在QTP中设置:file-->settings-->Resource-->“添加VBS

最实用的10个重构小技巧排行榜

LZ最近一直在研究虚拟机源码,可惜目前还只是稍微有一点点头绪,无法与各位分享,庞大的JAVA虚拟机源码果然不是一朝一夕能搞定的,LZ汗颜. 本次我们抛开JAVA虚拟机源码这些相对底层的东西,LZ来与各位探讨一下几个代码重构的小技巧,这些内容部分来自于书籍当中,部分来自于LZ维护项目当中的一些实践经验.如果猿友们曾经用过这种手法,也不妨参与到文章的留言当中,将你的小心得.小体会共享与他人,也可以拿来冲击LZ自己定义的排行榜,LZ不甚欢迎. 重构的手法有很多种,相对而言,一篇文章的涵盖量自然是无法提

最强 Android Studio 使用小技巧和快捷键【非原创】

(发现本文是个很不错的文章,相当实用,特分享与大家.分享自:http://m.open-open.com/m/lib/view/1458715872710.html 特此声明,好记性不如烂笔头,market下来以备后用) 原文如下: 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 –