-
以自定义类型返回选择的属性 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子句 1.以Object[]形式返回选择的属性: 2.以List形式返回选择的属性 3.以map形式返回选择的属性 4.以自定义类型返回选择的属性 5.获取独特的结果-distinct关键字查看全部
-
查询对象--from子句 一、from子句 1.from子句是HQL语句的最简形式 2.from子句指定了HQL语句查询的主体----映射配置的持久化类及其属性 当我们编写的HQL语句只有from子句时,HQL框架默认查询该持久化类的所有实例以及该持久化类映射配置的信息,当HQL框架将HQL解析成SQL时,就会查询该持久化类映射的数据表中的所有映射字段信息,并将返回的查询结果封装成该持久化类的list集合 3.默认情况下,hibernate是不做外键的查询操作的,当需要用到外键是才会去查询外键所对应的持久类,在控制台输出语句中,已经输出过的外键所对应的持久类查询sql语句不再重复输出。 二、from子句中持久化类的引用 HQL的持久化的引用过程中,直接引用类名即可(当然也可用全限定名),因为Hibernate通过映射,会自动导入缺省的权限类名 三、别名的使用 1.为被查询的类指定别名 2.在HQL语句其他部分通过别名引用该类 3.别名命名习惯(参考Java变量的命名习惯;要保留代码的可读性) e.g. from Seller as s/from Seller s //别名:s查看全部
-
from子句中别名的应用: 1.为被查询的类指定别名 2.在HQL语句其他部分通过别名引用该类 3.别名命名习惯(参考Java变量的命名习惯;要保留代码的可读性) e.g. from Seller as s/from Seller s //别名:s查看全部
-
HQL的持久化的引用过程中,直接引用类名即可(当然也可用全限定名),因为Hibernate通过映射,会自动导入缺省的权限类名查看全部
-
HQL语句中可以直接使用 "from ClassName" 即可查询到此类对应数据库表中的所有信息,并将返回的查询结果封装成该持久化类的list集合,因此一般定义一个带泛型的List集合来存储;不需要像sql那样 "select*from TableName" P.S. 1.HQL是面向对象的查询,查询的是类,不同于sql直接查询表; 2.from 后面加的是类名(注意大小写); 3.list()方法会根据查询的类名然后去映射文件中找到相应的数据库表,此时便把HQL语句解析成sql语句.再查询到相应的记录,最后返回记录的持久化对象的集合; 4.对于Hiberante5.2.4,query.list()方法已经弃用。 public class SelletTest { private Session session; @Before public void setUp() throws Exception { session=HibernateSessionFactory.getSession(); } @After public void tearDown() throws Exception { session.close(); } @Test public void test() { String hql=" from Seller "; Query query=session.createQuery(hql); List<Seller> sellers=query.list();// hibernate5.2.4已经弃用了query.list()方法而是使用getResultList()方法 for (Seller seller : sellers) { System.out.println(seller); } }查看全部
-
from子句 1.from子句是HQL语句的最简形式 2.from子句指定了HQL语句查询的主体----映射配置的持久化类及其属性 当我们编写的HQL语句只有from子句时,HQL框架默认查询该持久化类的所有实例以及该持久化类映射配置的信息,当HQL框架将HQL解析成SQL时,就会查询该持久化类映射的数据表中的所有映射字段信息,并将返回的查询结果封装成该持久化类的list集合 3.默认情况下,hibernate是不做外键的查询操作的,当需要用到外键是才会去查询外键所对应的持久类,在控制台输出语句中,已经输出过的外键所对应的持久类查询sql语句不再重复输出。查看全部
-
from子句 1.from子句是HQL语句的最简形式 2.from子句指定了HQL语句查询的主体----映射配置的持久化类及其属性 当我们编写的HQL语句只有from子句的时候,HQL框架默认就是查询该持久化类的所有实例以及该持久化类映射配置的信息,当HQL框架将HQL解析成SQL时,就会查询该持久化类映射的数据表中的所有映射字段信息,并将返回的查询结果封装成该持久化类的list集合查看全部
-
查询对象--from子句 1.from子句 2.from子句中持久化类的引用 3.别名的使用查看全部
-
注意 <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();这两行有空指针异常查看全部
-
增加了自定义构造器(带参数) 一定要注意将默认构造器也一并添加查看全部
-
Ps1:别名使用不是必须的,但是后期多个表结合起来时,避免多个表中有字段名重复,推荐还是养成别名操作的习惯。 Ps2:当只查询一个属性时,即select 只有一个的时候,返回的类型是对象类型,而不是对象数组查看全部
举报
0/150
提交
取消