-
******重点**** 集合运算: 1、is [not] empty,集合【不】为空,不包含任何元素;对应SQL的exists运算 2、member of 元素属于集合 ;对应SQL的in运算。查看全部
-
逻辑运算: 逻辑与:同true才为true; 逻辑或:同false才为false; 逻辑非:取反查看全部
-
字符串模式匹配: 1.like 关键字 2.通配符:% 匹配任意个字符,_ 匹配一个字符查看全部
-
范围运算查看全部
-
比较运算符 HQL中的x=null会被解析为SQL中的x is null、x<>null会被解析为SQL中的x is not null查看全部
-
where子句查看全部
-
distinct关键字查看全部
-
以自定义类型返回 1.在持久化类中定义对应的构造器 例如: public Sellers(String name,String address){ this.name=name; this.address=address; } 2.select子句中调用定义的构造器,见截图查看全部
-
通过Map返回查询结果: 以Map形式返回 1.select子句中使用new map指定 2.key值为索引值,字符串类型,如果给查询字段指定了别名,则以该别名为key的值 注:使用Map集合时考虑使用字段的别名获取属性信息,这样相对于序号不容易犯错哦查看全部
-
选择-select子句,作用:指定只需要的查询信息,提高程序的运行效率 1.以Object[]形式返回选择的属性: 注意:hql的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组,然而如果只指定了一个查询字段,则返回的是一个Object对象。 String hql = "select s.name,s.tel from Seller s"; Query query = session.createQuery(hql); List<Object[]> sellers = query.list(); for(Object[] objs:sellers){ System.out.println("name:"+objs[0]); System.out.println("tel:"+objs[1]); }(如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标) 2.以List形式返回选择的属性 String hql = "select new list(s.name,s.tel,s.address) from Seller s"; ... List<List>lists=query.getResultList(); 3.以map形式返回选择的属性 注意:key为索引值,是字符串类型(map.get("0")),使用Map集合时考虑使用别名获取属性信息 String hql = "select new map(s.name,s.tel,s.address) from Seller s"; 4.以自定义类型返回选择的属性 (1)持久化类中定义对应的构造器 (2)select子句中调用定义的构造器 注意:默认构造器是需要的,因为,在Hibernate没有指定的查询的放回集合时候,Hibernate会自动去找默认构造器,如果不存在,则会出现异常 String hql = "select new Seller(s.name,s.tel,s.address) from Seller s"; 5.获取独特的结果-distinct关键字 distinct关键字 消除查询过程中重复的元素 String hql = "select distinct s.sex from Seller s";查看全部
-
from子句中别名的引用: 1.为被查询的类指定别名 2.在HQL语句其他部分通过别名引用该类 3.别名命名习惯,参考Java变量的命名习惯 为类指定别名:from Seller as s/from Seller s,要保留代码的可读性 from子句中别名的应用 1.为被查询的类指定别名 2.在HQL语句其他部分通过别名引用该类 3.别名命名习惯 from Seller 别名:seller 单字母:s查看全部
-
from子句中持久化类的引用: 1、不需要引入持久化类的全限定名(如from com.imooc.model.Seller),直接引入类名(from Seller)即可 2、我们知道在java环境中一定要指明全限定名,这样java环境才知道去获取这个类,而HQL语句中之所以可以省略,是因为auto-import自动引入缺省情况。hibernate框架中,在解析HQL语句时,会根据映射配置信息自动完成持久化类的导入,这样的方式更加方便,也更加符合程序员的编程习惯。 3、在from子句中全限定名的引用与直接引入类名是一样,并不会报错!查看全部
-
from子句: from子句是HQL语句的最简形式,换句话说,HQL语句只需要from子句就可以执行查询了,这是为什么呢? 这是因为from子句指定了HQL语句查询的主体----映射配置的持久化类及其属性,当我们编写的HQL语句只有from子句的时候,HQL框架默认就是查询该持久化类的所有实例以及该持久化类映射配置的信息,当HQL框架将HQL解析成SQL时,就会查询该持久化类映射的数据表中的所有映射字段信息,并将返回的查询结果封装成该持久化类的list集合查看全部
-
对于Hiberante5.2.4,query.list()方法已经弃用: public class SelletTest { private Session session; private Transaction transaction; @Before public void setUp() { session = HibernateSessionFactory.openSession(); transaction=session.beginTransaction(); } @Test public void selletTest() { String hql = "from Seller"; Query query = session.createQuery(hql, Seller.class); // 注:hibernate5.2.4已经弃用了query.list()方法 List<Seller> sellers = query.getResultList(); for (Seller seller : sellers) { System.out.println(seller); } } @After public void tearDown(){ transaction.commit(); session.close(); } }查看全部
-
***重点**Query接口简介***重点*** 1.org.hibernate.Query接口定义有执行查询的方法(该方法完成HQL语句的解析与执行过程,并返回查询的结果。就像SQL语句没有jdbc接口,它也就是普通的字符串变量,HQL语句也一样,编写好的HQL语句也就是一个普通的字符串变量,而hibernate框架就负责解析HQL语句,然后根据配置信息生成相应的SQL语句来执行数据库的查询操作,那么完成这个过程依靠的就是Query接口); 2.Query接口支持方法链编程风格,使得程序代码更为简洁(方法链编程:调用方法后,返回的结果依然是调用这个方法的对象,可以在调用方法后直接调用该对象的其他方法,这样可以使用一个程序语句完成多个方法的调用与执行。在Query接口中,方法链编程使用最多的场景是查询参数的动态设置,特别是多个参数的设置) 3.Query实例的创建: a.Session的createQuery()方法创建Query实例 b.createQuery方在调用时需要传递一个参数(即要查询的HQL语句),createQuery(hql) 4.Query执行查询 a.Query接口的list()方法执行HQL查询 b.list()方法返回结果数据类型为java.util.List,List集合中存放符合查询条件的持久化对象查看全部
举报
0/150
提交
取消