- 什么是hql?
HQL是Hibernate Query Language的缩写
2、hql处理返回集结果
结果处理情况一:直接利用对象进行数据接收
jdbc:操作的是数据库表
select * from t_hibernate_book
list<Book> list = this.bookDao.executeQuery(sql,pageBean);
hql:操作的是实体类
eg:
public void testList1() {
String hql = "from Book";
//Query-->preparestatement
Query query = session.createQuery(hql);
List<Book> list = query.list();
for(Book book : list) {
System.out.println(book);
}
}
结果处理情况二: 查一列------>通过String(它的返回类型)进行接受
jdbc:查的是表列中某列,列名不区分大小写
hql:查的是实体类的谋一属性,严格区分大小写,关键字不区分大小写
eg:
@Test
public void testList2() {
String hql = "select bookName from Book";
List<String> list = session.createQuery(hql).list();
for(String bname : list) {
System.out.println(bname);
}
}
结果处理情况三:通过object[]进行接受
@Test
public void testList3() {
String hql = "select bookId,bookName from Book";
List<Object[]> list = session.createQuery(hql).list();
for(Object[] book : list) {
System.out.println(Arrays.toString(book));
}
}
结果处理情况四:利用hibernate内置函数进行结果处理
@Test
public void testList4() {
String hql = "select new map(bookId,bookName) from Book";
List<Map> list = session.createQuery(hql).list();
for(Map book : list) {
System.out.println(book);
}
}
结果处理情况五:利用构造方法进行结果处理
@Test
public void testList5() {
String hql = "select new Book(bookId,bookName) from Book";
//去写一个构造方法在实体类中(bookId,bookName)
List<Book> list = session.createQuery(hql).list();
for(Book book : list) {
System.out.println(book);
}
}