1.巧用new map

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

 如:查询角色时,我们只想要 id,name,和remark 这3个属性的值,我们可以用new map的方式。
       查询结果是: List<Map>  ,其中map的key是as后面的字符串,map的value 是as前面的属性的值
Hql如下:
String hql = "select new map(r.id as id,r.name as name ,r.remark as remark)  from Role r"; 
1
 
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名

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




2.巧用 new javaBean

        在查询表中部分字段时,也可以用javaBean来封装的部分字段的值。
        注意点:如果这个javaBean没有被hibernate映射过,则new 后面写全包名+类简称。

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


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

        在数据查询时,我们希望查询出几个字断的拼接后的结果。如:有省、市,区3个字段,我们希望查询出的结果是:xx省xx市xx区。
        使用concat就可以解决这个问题。
        代码:
/* concat将字段的值拼接起来,这样查询后name对应的值:xx省xx市xx区 */
hql= "select concat(province,city,district) as name from Region ";
 
1
/* concat将字段的值拼接起来,这样查询后name对应的值:xx省xx市xx区 */
2
hql= "select concat(province,city,district) as name from Region ";


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

  1. Mysql编写sql语句的小技巧

    1.查询数据(保证查询性能) SELECT * 和 SELECT t.id , t.name:后者性能其实总体优于前者. 2.在查询的时候最好给表起个 别名,方便找到表中要查询的字段.执行sql的进行 ...

  2. (小技巧)Sql server查看sql语句的执行时间(转)

    转自CSDN: 在写数据库sql的时候,我们往往很关心该sql语句的执行效率,如下小技巧可以帮助程序员简单快速的得到某条或某几条sql的执行时间. declare @d datetime set @d ...

  3. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  4. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  5. JavaScript中if语句优化和部分语法糖小技巧推荐

    前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...

  6. HQL语句大全(转载)

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

  7. HQL语句大全

    第 15 章 HQL: Hibernate查询语言 Hibernate配备了一种很强大的查询语言,这样的语言看上去很像SQL.可是不要被语法结构 上的类似所迷惑,HQL是很有意识的被设计为全然面向对象 ...

  8. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  9. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

随机推荐

  1. ethernaut 以太坊靶场学习 (1-12)

    前言 这个靶场搜集了许多不同的 solidity 开发的问题,通过这个可以入门 区块链安全 Fallback 给出了源码 pragma solidity ^0.4.18; import 'zeppel ...

  2. React Native常用第三方组件汇总--史上最全 之一

    React Native 项目常用第三方组件汇总: react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown ...

  3. Pycharm代码补齐功能中的图标的意思

    分清楚图标的意思就能更好的使用对应的方法.类,避免错误使用括号 PS:博主老是给属性方法加上括号   代表方法: 红色的m.f,   代表类变量: 黄色的f     之前遇到个属性方法: 好像是p,无 ...

  4. C#安全加密类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

  5. SQL Server 中为何拥有db_owner权限的账号删除不掉数据库

    今天在公司的SQL Server服务器上,使用了一个只有public和dbcreator角色的账号"user1"在SMSS中去删除一个数据库,但是死活报错说没有权限,报错如下: D ...

  6. mysql瑞士军刀–pt工具

    Percona-Toolkits Percona-toolkit 简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql任务和系统任务,这些 ...

  7. python虚拟环境 -- virtualenv , virtualenvwrapper

    virtualenv -- python虚拟沙盒 有人说:virtualenv.fabric 和 pip 是 pythoneer 的三大神器. 一.安装 pip install virtualenv ...

  8. 安装Tidb数据库出现SSD硬盘IOPS不到40000的错误

    今天安装tidb数据库出现IOPS过低的问题,这里如果仅仅是测试的话我们可以降低这个值,大概遇到的问题是: 解决方法: 1.我们在中控机的目录下修改某个配置文件: [tidb@:vg_adn_tidb ...

  9. css常见效果

    1.ul li横排 /* ul li以横排显示 */ /* 所有class为menu的div中的ul样式 */ div.menu ul { list-style:none; /* 去掉ul前面的符号 ...

  10. Wannafly挑战赛27

    Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...