-
null值判断运算 HQL中 = null <=> is null <> null <=> is not null
查看全部 -
比较运算 1. = ,<> ,< ,> ,>= ,<= 2.null值判断—is [not] null 在HQL中允许使用 = ,<> 进行null值判断 x=null -> x is null x<>null -> x is not null e.g. public void testWhere1(){ String hql="from Commodity where price>400"; Query query = session.createQuery(hql); List<Commodity> commodities=query.list(); for (Commodity commodity : commodities) { System.out.println("name:"+commodity.getName()); System.out.println("price:"+commodity.getPrice()); } }
查看全部 -
限制—where子句 1.比较运算 2.范围运算 3.字符串模式匹配 4.逻辑运算 5.集合运算 6.在HQL中使用+、-、*、/运算符 7.查询单个对象(uniqueResult方法)
查看全部 -
获取独特的结果-distinct关键字 distinct关键字 消除查询过程中重复的元素 e.g. String hql="select distinct c.sex from Customer c";
查看全部 -
增加自定义构造器,一定要补充默认构造器,否则hql=" from classname" 会出错,因为在Hibernate没有指定的查询的返回集合时候,Hibernate会自动去找默认构造器
查看全部 -
以自定义类型返回选择的属性 1.持久化类中定义对应的构造器 public Sellers(String name,String tel,String address){ this.name=name; this.tel=tel; this.address=address; } 2.select子句中调用定义的构造器 注意:默认构造器是需要的,因为在Hibernate没有指定的查询的返回集合时候,Hibernate会自动去找默认构造器,如果不存在,则会出现异常 String hql = "select new Seller(s.name,s.tel,s.address) from Seller s";
查看全部 -
通过Map返回查询结果 1.select子句中使用new map指定 2.key值为索引值,字符串类型,如果给查询字段指定了别名,则以该别名为key的值 注:使用Map集合时考虑使用字段的别名获取属性信息,这样相对于序号不容易犯错 e.g. public void testSelectCauseMap(){ String hql="select new map(s.name,s.tel as tel,s.address as address) from Seller s"; Query query=session.createQuery(hql); List<Map> maps=query.list(); for (Map map : maps) { System.out.println("name:"+map.get("0")); System.out.println("tel"+map.get("tel"));//使用字段的别名获取属性信息,不容易出错 System.out.println("address"+map.get("address")); } }
查看全部 -
以List形式返回选择的属性 String hql = "select new list(s.name,s.tel,s.address) from Seller s"; Object[],List,map不存在孰优孰劣,而是根据个人喜好选择
查看全部 -
以Object[]形式返回选择的属性 1.select子句中未指定返回数据类型,默认为Object[] HQL的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组;如果只指定了一个查询字段,则返回的是一个Object对象。 e.g. public void testSelect(){ String hql="select s.name,s.tel,s.address from Seller s"; Query query=session.createQuery(hql); List<Object[]> lists=query.list(); for (Object[] list : lists) { System.out.println("name:"+list[0]); System.out.println("tel:"+list[1]); System.out.println("address"+list[2]); } } //如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标
查看全部 -
选择-select子句<br> 1.以Object[]形式返回选择的属性<br> 2.以List形式返回选择的属性<br> 3.以map形式返回选择的属性<br> 4.以自定义类型返回选择的属性 5.获取独特的结果-distinct关键字
查看全部 -
from子句中别名的应用: 1.可以通过AS关键字(也可以省略)为被查询的类指定别名 2.在HQL语句其他部分通过别名引用该类(引用较多时会方便很多) 3.别名命名习惯:与持久化类名相同,全部采用小写,可以参考Java变量名的命名;如果为了简洁,可以采用单字母命名
查看全部 -
from子句中持久化类的引用: 1、不需要引入持久化类的全限定名(如from com.imooc.model.Seller),直接引入类名(from Seller)即可 2、我们知道在java环境中一定要指明全限定名,这样java环境才知道去获取这个类,而HQL语句中之所以可以省略,是因为auto-import自动引入缺省情况。hibernate框架中,在解析HQL语句时,会根据映射配置信息自动完成持久化类的导入,这样的方式更加方便,也更加符合程序员的编程习惯。 3、在from子句中全限定名的引用与直接引入类名是一样,并不会报错!
查看全部 -
默认情况下,hibernate是不做外键的查询操作的,当需要用到外键是才会去查询外键所对应的持久类,在控制台输出语句中,已经输出过的外键所对应的持久类查询sql语句不再重复输出。
查看全部 -
from子句: from子句是HQL语句的最简形式,换句话说,HQL语句只需要from子句就可以执行查询了,这是为什么呢? 这是因为from子句指定了HQL语句查询的主体----映射配置的持久化类及其属性,当我们编写的HQL语句只有from子句的时候,HQL框架默认就是查询该持久化类的所有实例以及该持久化类映射配置的信息,当HQL框架将HQL解析成SQL时,就会查询该持久化类映射的数据表中的所有映射字段信息,并将返回的查询结果封装成该持久化类的list集合
查看全部 -
注意 <mapping resource="com/imooc/model/Seller.hbm.xml"/> <mapping resource="com/imooc/model/Customer.hbm.xml"/>等语句的使用 比如在这节课中,如果我创建了五条映射语句,<mapping resource="com/imooc/model/Seller.hbm.xml"/> <mapping resource="com/imooc/model/Customer.hbm.xml"/> <mapping resource="com/imooc/model/Commodity.hbm.xml"/> <mapping resource="com/imooc/model/Order.hbm.xml"/> <mapping resource="com/imooc/model/OrderItem.hbm.xml"/> 而没有创建对应的5个持久化类以及映射文件,只有商家和顾客两个。则junit测试会抛出指示Query query = session.createQuery(hql);session.close();这两行有空指针异常
查看全部
举报