zoukankan      html  css  js  c++  java
  • HQL连接查询和注解

    HQL连接查询和注解

    一:HQL连接查询

    1. 各种连接查询:

    内连接:inner join或join

    From Entity inner [inner] join [fetch] Entity.property;

    左外连接:left outer join或left join

    From  Entity left[outer] join [fetch] Entity.property;

    迫切左外连接:left outer join fetch或left join fetch

    右外连接:right outer join或right join

    迫切连接:inner join fetch或join fetch

    注:迫切连接要使用对象连接,不然的话会出错。

             等值连接:

             From  Dept d,Emp p where d=e.dept;

    1. 聚合函数

    select count(*),sum(sal),min(sal),max(sal),avg(sal)from Emp;

    List<Object[]>list=query.list();

                                for (Object[] o:list) {

    System.out.println("总:"+o[0]+"和:"+o[1]+"最小值:"+o[2]+"最大值:"+o[3]+"平均数:"+o[4]);

                                }//省略其它代码

    按职位统计员工个数:

    select e.job,count(*) from Emp e group by e.job

    统计每个部门下的员工个数并且大于2的显示输出:

    select e.job,count(*) from Emp e group by e.job having count(*)>2;

    1. 子查询关键字:

    all:子查询返回所有记录。

    any:子查询返回的任意的一条记录。

    some:与“any”意思相同

    in:与“=any意思相同”

    exists:子查询语句至少返回一条记录。

    1. 操作集合函数或属性。

    size()或size:获取集合中的元素数目。

    minIndex()或minIndex:对于建立索引的集合,获取最小的索引

    maxIndex()或maxIndex:对于建立索引的集合,获取最大的索引。

    minElement()或minElement:对于包含基本类型的元素集合,获得集合中取值最小的元素。

    maxElement()或maxElement: 对于包含基本类型的元素集合,获得集合中取值最大的元素。

    Elements();获取集合中的所有元素。

    二:查询性能优化

    1. hibernate查询优化策略:

    (1.)使用迫切左外连接,或迫切连接查询策略,配置二级缓存和查询等方式,减少select语句数目,降低访问数据库的频率。

    (2.)使用延迟加载等方式避免加载多余不需要访问的数据。

    (3.)使用Query接口的iterate()方法减少select语句的字段,降低访问数据库的数据量,并结合缓存等机制减少数据库的访问次数,提高查询效率。

    2.HQL优化:

    (1.)避免使用or操作的不当。

    (2.)避免使用not。

    (3.)避免使用like的特殊形式。

    (4.)避免使用having子句。

    (5.)避免使用distinct。

    (6.)索引在以下情况下失效,使用时注意。

                       对字段使用函数,该字段的索引将不起作用。如:substring(aa,1,2)=’xxx’

                       对字段进行计算,该字段的索引将不起作用。如:price+10。

    三:注解

    1. 使用hibernate注解的步骤如下:

    (1.)使用注解配置持久化类及对象的关联关系。

    (2.)在hibernate配置文件(hibernate.cfg.xml)中声明持久化类,语法如下:

                        <mapping class=”持久化类完整限定名”>

    1. 配置持久化类的常用注解:

    @Entity:将一个类声明为持久化类。

    @Table:为持久化映射指定表。

    @Id:声明了持久化类的表示属性。

    @GeneratedValue:定义表示属性的生成策略。

    @UniqueConstraint:定义表的唯一约束。

    @Lob:表示属性将被持久化为BLOD或者CLOD类型。

    @Column:将属性映射到数据库字段。

    @Transient:指定可以忽略的属性,不用持久化到数据库。

            

  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/dkz1/p/7704644.html
Copyright © 2011-2022 走看看