-
选择-select子句 1.以Object[]形式返回选择的属性: 注意:hql的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组,然而如果只指定了一个查询字段,则返回的是一个Object对象。 String hql = "select s.name,s.tel,s.address 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]); System.out.println("address:"+objs[2]); }(如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标) 2.以List形式返回选择的属性 String hql = "select new list(s.name,s.tel,s.address) from Seller s"; 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";查看全部
-
is null 和 = null在HQL中是相同的 is not null 和 <>null 也是相同语义!! 【但!在SQL中不能使用=null,以及<>null】查看全部
-
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"),这里面取值的时候是字符串类型!! 或者用下面这种方式:[别名] String hql = "select new map(s.name as name ,s.tel as tel,s.address as addr)from Seller s"; for(Map map :maps){ System.out.println("name"+map.get("name")); System.out.println("name"+map.get("tel")); System.out.println("name"+map.get("addr")); }查看全部
-
选择-select子句 1.以Object[]形式返回选择的属性: 注意:hql的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组,然而如果只指定了一个查询字段,则返回的是一个Object对象。 String hql = "select s.name,s.tel,s.address 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]); System.out.println("address:"+objs[2]); }(如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标) 2.以List形式返回选择的属性 String hql = "select new list(s.name,s.tel,s.address) from Seller s"; 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";查看全部
-
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语句.再查询到相应的记录,最后返回记录的持久化对象的集合. 对于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 destroy(){ } })查看全部
-
HQL定义: 1、HQL:Hibernate Query Lauguage,Hibernate查询语言; 2、HQL是面向对象的查询语言(即以面向对象的角度进行查询),它查询的主体是映射配置的持久化类及其属性,与SQL查询主体是数据库表是完全不同的,除此之外,从数据库查询方面的功能上来讲,SQL能实现的数据库查询功能,HQL几乎可以同样实现。实际上作为一个ORM对象关系映射框架,Hibernate框架会将编写好的HQL语句解析成SQL语句来完成最终的数据库查询操作。 3、HQL提供了丰富灵活的查询特性,是Hibernate官方推荐查询方式。查看全部
-
比较运算 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()); } }查看全部
-
注意 <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();这两行有空指针异常查看全部
-
使用uniqueResult需要在where保证只有一个返回结果 如果有多个 则会返回异常 String hql="from Commodity c where c.name='优盘'"; Query query =session.createQuery(hql); Commodity c=(Commodity)query.uniqueResult(); System.out.println(c.toString());查看全部
-
逻辑运算符 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 '%电脑%'";查看全部
-
//distinct的使用 select distinct s.star from Seller s 使用distinct去除s.star中的重复元素查看全部
-
以自定义类型返回数据 1.先创建自定义构造器 例如 public Sellers(String name,String address){ this.name=name; this.address=address; } 2.通过自定义类型返回查询结果 String hql="select new Seller(s.name,s.tel,s.address)from Seller s"; Query query=session.createQuery(hql); List<Seller> lists=query.list(); for (Seller seller : lists) { System.out.println("-----------------------------"); System.out.println("name"+seller.getName()); System.out.println("tel"+seller.getTel()); System.out.println("address"+seller.getAddress()); }查看全部
-
//以list方式返回查询结果 String hql="select new list(s.name,s.tel,s.address) from Seller s"; Query query=session.createQuery(hql); List<List> lists=query.list(); for (List list : lists) { System.out.println("-------------------------"); System.out.println("name:"+list.get(0)); System.out.println("tel:"+list.get(1)); System.out.println("address:"+list.get(2)); }查看全部
-
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(""); }查看全部
-
选择-select子句 1.以Object[]形式返回选择的属性: 注意:hql的select查询语句中,如果指定了多个查询字段,则返回的是一个Object[]数组,然而如果只指定了一个查询字段,则返回的是一个Object对象。 String hql = "select s.name,s.tel,s.address 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]); System.out.println("address:"+objs[2]); }(如果是单个查询字段的话就只需要把上面的Object[]中的[]去掉,打印输出时不需要指明下标) 2.以List形式返回选择的属性 String hql = "select new list(s.name,s.tel,s.address) from Seller s"; 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";查看全部
举报
0/150
提交
取消