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 中的身份验证及登录问题

    SQLServer 中的身份验证及登录问题 by:授客 QQ:1033553122 身份验证 SQL Server 支持两种身份验证模式,即Windows 身份验证模式和混合模式. Windows 身 ...

  2. VMware Linux下拖拽补丁vmtools的安装和卸载

    Linux下拖拽补丁vmtools的安装和卸载 by:授客 QQ:1033553122 Vmware 8.0.4为例子 步骤1.VM->Install Vmware Tools... 步骤2.查 ...

  3. Oracle 修改SYS、system用户密码

    Oracle 修改SYS.system用户密码 by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应 ...

  4. springcloud 入门 4 (rebbon源码解读)

    Ribbon: ribbon是springcloud个服务之间调用的一种实现方式:主要提供了客户端的负载均衡.feign集成了Ribbon(下节介绍) 源码分析: 1> 源码入口 @LoadBa ...

  5. Asp.Net Core混合使用cookie和JwtBearer认证方案

    自己有时捣鼓一些小型演示项目,服务端主要是提供Web Api功能.为了便于管理,需要在服务端加一些简单的MVC网页,用管理员身份登录,做一些简单的操作. 因此需要实现一个功能,在一个Asp.Net C ...

  6. python类的内置方法

    1,__init__(self) 初始化方法,实例化一个对象的时候就会被执行 2,__call__(self,*args) 把实例对象作为函数调用,即实例化一个对象后,在对象后面加括号即可调用__ca ...

  7. 解决MySQL5.6中的Slave延迟问题的基本教程

    一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在sla ...

  8. It was not possible to find any compatible framework version

    It was not possible to find any compatible framework version The specified framework 'Microsoft.NETC ...

  9. AngularJS 中<a> 超链接标签不起作用?

    开始时遇到个问题,单页应用<a>元素链接点击就是不跳转页面,使用超链接标签<a href='group'>click</a> 不起作用. 解决方法: 如果你不巧配置 ...

  10. [BUG] python实例化N次类,调用类函数log会输出N遍的bug 解决办法

    最近再写DOU用例时,采用的是 unittest测试框架,就涉及到将其它所有模块需要全部在一个 .py文件中进行实例化,然后再运行时发现在控制台中同一个日志信息会打印多次(实例化几次,同一消息就会打印 ...