Hibernate课堂笔记

 

源码

链接:http://pan.baidu.com/s/1dFiaZOd 密码:f7fj

 

 

 

HQL查询的子句
检索对象--from子句
选择--select子句
限制--where子句
排序--order by子句

1.HQL定义和HQL语句形式
2.掌握Query对象的使用
3.能够编写出符合数据查询要求的HQL语句

什么是HQL?
HQL是查询语言 Hibernate Query Language
HQL是面向对象的查询语言--映射配置的持久化类以及属性
HQL面向对象查询语句 对java类与属性大小敏感
HQL对关键字不区分大小写
HQL语句形式?
select from where group by having order by

准备查询
1.org.hibernate.Query接口
@1.Query接口定义有执行查询的方法
@2.Query接口支持方法链编程风格使得程序代码简介(动态设置)


2.Query实例的创建
@Session的createQuery()方法创建Query实例
@CreateQuery方法包含一个HQL语句参数,CreateQuery(hql)


3.执行查询
@Query接口的list()方法执行HQL查询
@list()方法返回结果数据类型为java.util.List list集合中存放符合查询
@条件的持久化对象

 

思路分析:

1.创建pojo  生成对应的映射关系  ,在Hibernate.hbm.xml中配置各个属性

多对一:

<many-to-one name="seller" class="com.imooc.model.Seller"
fetch="join" >
<column name="SELLER" />
</many-to-one>

一对多:

<set name="orderItems" inverse="true" cascade="all" lazy="false">
<key>
<column name="ORDERID" />
</key>
<one-to-many class="com.imooc.model.OrderItem" />
</set>

————————

 

From子句中别名的应用 as
1.为被查询的类指定别名
2.在HQL语句其他部分通过别名引用该类
3.别名的习惯 from Seller ---别名s seller
String Hql="from Seller as s";
也可以不使用as关键字
String hql="from Seller s,Customer c";

 

 

 

*
选择--select子句
1.Object[]形式返回选择的属性 String hql="select s.name,s.age from Sellter s";
2.以List形式返回选择属性 String hql="select new list(s.name) from Sellter s";
3.以map形式返回选择的属性 String hql="select new map(s.name) from Sellter s";
4.以自定义类型返回选择属性 String hql="select new Selller(s.name,s.tel) from Selller s";
要在持久类中弄构造

 

5.获取独特的结果--distinct关键字

 


*
以自定义类型返回
1.持久化类中定义对应的构造器
2.select 子句中调用定义的构造器

 

*
distinct关键字
1.使用distinct关键字去除查询结果中重复的元素
select sex from Customer c;得到sex男 女 男
select distinct sex from Customer c;得到 男 女

 

*
限制--where子句
设置查询的条件 ---限制---返回的结果查询

 

1.比较运算
2.范围运算
3.字符串模式匹配
4.逻辑运算
5.集合运算
6.在HQL中使用+ - x /范围运算
7.查询单个对象(uniqueResult方法)

 


*比较运算
持久化类的属性---给定的查询条件
= <> < > >= <=
2.null 值判断 ---is [not] null

 

 

 

*
1[not] in
2[not] between 值1 and 值2

 

String hql="from Commoidity where c.price in(20,30)";
String hql="from Commoidity where c.price between 20 and 30 ";
字符串模式匹配
like 关键字
2通配符
% 任意字段
_ 一个字符
String hql="from Customer where c.name like '张_'";//查询2个字的
String hql="from Customer where c.addresss '%北京%'";
String hql="from Commodity c where c.price between 100 ";

 

String hql = " from Commodity c where c.price between 1000 and 5000 and
c.category like '%电脑%' or name like '%电脑%' ";

 

 

 

集合运算
1 empty集合
2 member of 元素属于集合

 

查询具体的
String hql = "from Customer c where c.name='张三'";
Query query = session.createQuery(hql);
Object uniqueResult = query.uniqueResult();

 


***
使用Order by 子句对查询结果排序
1.升序排序 asc
2.降序排序 desc
String hql = "from Commodity order by price desc";

 

posted @ 2016-08-20 23:54  那就这样吧-  阅读(82)  评论(0编辑  收藏  举报