1.hql:Hibernate Query Language(Hibernate查询语言)
作用:方便进行数据库操作
2. hql和sql区别
1.hql是基于实体属性进行查询的;sql是基于表实体进行查询的
2.hql区分大小写,关键字不区分大小写;sql不区分大小写
3.hql是面向对象的查询语言;sql是面向结构的查询语言
4.hql占位符下标从0开始(目前推荐使用:命名参数);sql占位符下标从1开始
3.5种处理hql查询返回的结果集
这里以Book类为实例
/**
* 结果处理一:当结果集为集合,查单个也可以通过这种方式,只不过不需要遍历
*/
@Test
public void testList1() {
String hql = "from Book";
Query query = session.createQuery(hql);
List<Book> list = query.list();
for (Book book : list) {
System.out.println(book);
}
}
/**
* 结果处理二:当结果集为集合,并且只查询其中一列时
*/
@Test
public void testList2() {
String hql = "select bookName from Book";
Query query = session.createQuery(hql);
List<String> list = query.list();
for (String bname : list) {
System.out.println(bname);
}
}
/**
* 结果处理三:当结果集为集合,并且查询两列及两列以上,使用Object[]
*/
@Test
public void testList3() {
String hql = "select bookId,bookName from Book";
Query query = session.createQuery(hql);
List<Object[]> list = query.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";
Query query = session.createQuery(hql);
List<Map> list = query.list();
for (Map book : list) {
System.out.println(book);
}
}
/**
* 结果处理五:当结果集为集合,并且查询两列及两列以上,使用构造方法进行结果处理,记得提供对应构造器!!
*/
@Test
public void testList5() {
String hql = "select