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. SQLServer 学习笔记之超详细基础SQL语句 Part 6

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 ...

  2. mysql如何修改开启允许远程连接

    关于mysql远程连接的问题,大家在公司工作中,经常会遇到mysql数据库存储于某个人的电脑上,大家要想连接mysql服务,装有mysql服务的电脑就必须开启远程连接 第一步,用dos连接上你的数据库 ...

  3. 记一款bug管理系统(bugdone.cn)的开发过程(1) -- 为什么要开发一款bug开发系统

    对于从事软件研发行业的同学来说bug管理系统肯定不陌生.本人03年左右开始正式成为一名码农,工作期间接触过若干bug管理系统,如JIRA等,不过都是自行部署在公司内网的. 几年过去了,现在已经是互联网 ...

  4. SQL Server客户端工具到底使用的是哪个provider呢?

    SQL Server客户端工具到底使用的是哪个provider呢? 转载自:http://blogs.msdn.com/b/apgcdsd/archive/2013/01/10/sql-server- ...

  5. 大于2t的磁盘分区,并格式化ext4挂载

    1:MBR分区表:(MBR含义:主引导记录) 所支持的最大卷:2T (T; terabytes,1TB=1024GB) 对分区的设限:最多4个主分区或3个主分区加一个扩展分区. 2:GPT分区表:(G ...

  6. 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)

    C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...

  7. MySQL日常运维操作---持续更新

    1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...

  8. ansible 碎记录

    https://www.zhukun.net/archives/8167 ansible -i new/hosts new -m authorized_key -a "user=root k ...

  9. 打开Excel时提示“向程序发送命令时出现问题”

    Excel界面中点击“文件”,选择“选项”,在弹出的“Excel选项”对话框中依次点击“高级”-“常规”,然后取消勾选”忽略使用动态数据交换(DDE)的其他应用程序”:

  10. python第三十课--异常(else讲解)

    演示else语句和异常处理机制结合使用 try: print('try...') print(10/0) except: print('except...') else: print('else... ...