您的位置:首页 > 其它

18.01.06,web学习第三十八天,还有一年,努力吧青年 hibernate第四天 HQL,Criteria,离线对象,查询策略

2018-01-06 17:32 507 查看

38.hibernate第四天

1. Number类型,所有数字类型的父类抽取。所有数字类型都可以使用Number接收,如接下来的聚合函数:

Hierarchy:分层,集成体系(ctrl+t)

Hibernate的聚合查询:count,sum,max,min,avg,他们返回的类型,   有的是double有的是long,所以使用父类Number接收。

String sql=”select count(cust_id) from 完整类名 ”;

Query q= session.createQuery(sql);

Number  n=(Number)q.uniqueResult();

2. 投影查询 指查询对象的某一个属性

1)查询一个属性(查询一列)

2)查询多个属性(查询多列)(返回值是一个集合List<Object[]>里面泛型是数组),我们希望将查询出来的数据封装到对象中,那么,给该对象给定一个构造函数(含有要查询的列)(再手动给定无参构造)。

 


 


3. HQL的多表查询

复习sql的多表查询:

交叉连接:

    Select * from a,b;(避免无用)

内联:

隐式内联:

Select * from A ,B where b.aid=a.aid;

显式内联:

Select  *  from  A  inner  join  B  on  a.cid=b.cid;

左外联:

    Select * from A left join B on b.aid=a.aid;

又外联: 

     Select * from A right join B on b.aid=a.aid;

HQL的多表查询;

内联:

String sql=”from Custmer c inner join c.Linkmans”;

Query q=session.create Query(sql);

List l=q.list();//返回的是查询出来的两张表对应的两个对象组成一个数组放到集合中。所以list泛型为Object[]数组

迫切内链接是返回的结果是查询出来的每一条记录的两个对象没有放在数组中,而是拼在了from 后面这个对象中(第二个对象直接放进了第一个对象的属性集合里)。语法:

String sql=”from Custmer c inner join fetch c.Linkmans”;

它的泛型是Custmer。

外联:(也存在迫切查询用法与上面相同)

String sql=”from Customer c left join c. linkmans”;left变right就是右连接。

4. Criteria语法(QBC)

基本语法:

Criteria c=session.createCriteria();

List<类> l=c.list();

条件:

Criteria c=session.createCriteria();

c.add(Restriations.eq(“”,));

分页:

Criteria c=session.createCriteria();

c.setFirstResult(0);

c.setMaxResult(2);

排序:

Criteria c=session.createCriteria();

c.addOrder(Order.asc(“属性”));

统计:

Criteria c=session.createCriteria();

c.setProjection(Projections.rowCount());

Long l=(Long)c.UniqueResult();

5. 离线查询

 


 


Detach:分离,拆开,使派遣。

核心:DetachedCriteria dc

 


6. 查询优化

1)类级别查询:

Fetch:接来,抵达,拿取

 


注意:懒加载在查询数据库时关联session不能为空。

懒加载,延迟加载:

对于session.get()方法无延时加载。

对于session.load()方法,默认是延时加载(返回给一个对象,但是没有查询,等到对象被使用时才去查询对象)。

配置文件:lazy属性:默认true,加载时不查询,使用对象时才查询。

改成fasle和get()方法没有任何区别。 

懒原理:如果debug中出现$$说明是代理对象。

所以延迟加载时会返回一个代理对象(没查数据库)。

2)关联级别查询(懵了)

 


 


批量抓取:

 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐