-
查询单个对象: query接口的uniqueResult方法 1.该方法的返回是实例对象而不是返回集。 2.需要注意的是我们必须要通过where将查询得到的记录只剩下一条或者查询不到。如果有一条以上就会发生异常。查看全部
-
四则运算 1.HQL语句中也可以使用 + - * / 四则运算 2.四则运算可以在where子句和select子句中使用查看全部
-
集合运算是HQL语句 1.is empty :集合为空,不含任何元素 2.member of:元素属于集合 HQL语句的empty解释成sql语句的exists. HQL语句的member of解释成sql语句的in. "from Grade where Grade.set is not empty" //查询的是存在学生的班级的班级信息. "from Student where Student.grade member of (from Grade where cid=1)" //查询id编号为1的班级的学生信息.查看全部
-
逻辑运算符 1.and(逻辑与)、or(逻辑或) 2.not(逻辑非) String hql="from Commodity c where c.price between 100 and 4000 and c.category like '%电脑%'"; String hql1="from Commodity c where c.price between 100 and 4000 or c.category like '%电脑%'";查看全部
-
字符串模式匹配 模糊匹配 like关键字 通配符 % _ %任意个字符 _ 一个字符查看全部
-
//寻找价格(不)是4000或5000的商品 String hql="from Commodity c where c.price (not) in (5000,4000)"; //寻找价格(不在)在200到4000的商品 String hql1="from Commodity c where c.price (not) between 200 and 4000";查看全部
-
is null 和 = null在HQL中是相同的 is not null 和 <>null 也是相同语义!! 【但!在SQL中不能使用=null,以及<>null】查看全部
-
String hql="select distinct c.sex from Customer c"; 注:1、distinct使用时只能放在查询语句的第一个字段前面,且只对查询单个字段才有过滤效果。 2、如果查询语句中包含多个字段时,那么distinct将不再具有过滤功能,但运行也不会报错。 3、如果distinct没有放在查询语句的第一个字段前面, 或语句存在多个distinct,运行会出错。查看全部
-
以自定义类型返回数据 1.先创建自定义构造器 例如 public Sellers(String name,String address){ this.name=name; this.address=address; } 2.在 hql中 select new Seller(s.name,s.address) from Seller s 3创建List集合 List<Seller> sellers=query.list(); for(Sellers selle:sellers){ 输出自己想要的字段(构造器中定义的) }查看全部
-
通过map返回 new Map<Key,Value> key为索引值(是字符串类型的!!) 例子:String hql = "select new map(s.name,s.tel,s.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("name"+map.get("1")); System.out.println("name"+map.get("2")); } [注]这里的get("0"),这里面取值的时候是字符串类型!!查看全部
-
以list方式返回查询结果 String hql = “select new list(s.name,s.tel,s.address)from Seller s”; Query query = session.createQuery(hql); List<List> list = query.list(); for(List list:lists){ list.get(0)//name信息 list.get(1)//tel信息 list.get(2)//address的信息 } PS:习惯那种或者那种有需求就用哪种 list和object、map没什么区别查看全部
-
hql中查询一个字段 返回的是List<Object>对象,查询多个字段返回的是List<Object[]>,查询所有字段返回的是List<实体类>对象,建议多使用别名来区分不同表中的相同字段 String hql="select s.name,s.tel,s.address,s.star from Seller s "; Query query=session.createQuery(hql); List<Object[]> list=query.list(); for (Object[] objects : list) { System.out.println(" name : "+objects[0]); System.out.println(" tel : "+objects[1]); System.out.println(" address : "+objects[2]); System.out.println(" star : "+objects[3]); System.out.println(""); }查看全部
-
别名的应用 为类指定别名:from Seller as s/from Seller s,要保留代码的可读性查看全部
-
from子句中持久化类的引用: 1、不需要引入持久化类的全限定名(如from com.imooc.model.Seller),直接引入类名(from Seller)即可 2、我们知道在java环境中一定要指明全限定名,这样java环境才知道去获取这个类,而HQL语句中之所以可以省略,是因为auto-import自动引入缺省情况。hibernate框架中,在解析HQL语句时,会根据映射配置信息自动完成持久化类的导入,这样的方式更加方便,也更加符合程序员的编程习惯。 3、在from子句中全限定名的引用与直接引入类名是一样,并不会报错!查看全部
-
在配置文档中设置了show_sql,则会在控制台里打印出sql语句.此sql语句就是list()方法解析HQL语句之后的sql语句. HQL语句中可以直接使用"from 类名"就可以查询到此类对应数据库表中的所有信息.不需要像sql那样"select*from 表名",直接"form 类名"即可. list()方法返回的是HQL语句所查询的类的持久化对象的集合.所以一般定义一个带泛型的List集合来存储. Query query=session.createQuery("from Student"); List<Student> list=query.list(); for(List l:list){ System.out.println(l); } 注意:HQL是面向对象的查询,查询的是类,不像sql一样,直接查询表.因此在from 后面加的是类名(注意大小写).list()方法会根据查询的类名然后去映射文件中找到相应的数据库表,此时便把HQL语句解析成sql语句.再查询到相应的记录,最后返回记录的持久化对象的集合.查看全部
举报
0/150
提交
取消