zoukankan      html  css  js  c++  java
  • HQL语句的3个小技巧

    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"; 

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

    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());
    		}
    		


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

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


    作者:zeng1994
    出处:http://www.cnblogs.com/zeng1994/
    本文版权归作者和博客园共有,欢迎转载!但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接!

  • 相关阅读:
    Linux-安装FFmpeg
    博客园添加视频
    博客园添加音乐
    通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记
    根据不同配置.env获取不同的配置文件的配置
    1M大概多少个字
    计算机存储单位
    DNS原理及其解析过程
    查看到百度经过了多少个网关
    C语言的本质(18)——函数的可变参数
  • 原文地址:https://www.cnblogs.com/zeng1994/p/7397575.html
Copyright © 2011-2022 走看看