Hibernate 中使用原生SQL 查询
来源:互联网 发布:淘宝比瑞吉旗舰店好吗 编辑:程序博客网 时间:2024/06/05 15:56
HQL尽管容易使用,但是在一些复杂的数据操作上功能有限。特别是在实现复杂的报表统计与计算,以及多表连接查询上往往无能为力,这时可以使用SQL(Native SQL)实现HQL无法完成的任务。
1、使用SQL查询
使用SQL查询可以通过两种方式来实现:(1)、利用Hibernate提供的SQLQuery对象执行。即可以通过Session对象的createSQLQuery()方法获取。如:
1
2
3
4
5
String sql =
"select * from product limit 0,10"
;
SQLQuery query = session.createSQLQuery(sql);
List<Object[]> = query.list();
(2)、利用ResultMetaData对象来实现执行SQL语句,但是如果过多地使用这种方法就会对系统的性能产生影响,它将降低运行效率。通过addScalar()方法设置返回数据的类型可以减少ResultSetMetaData对象的使用而提高运行效率。如:
1
2
3
4
5
6
7
8
9
10
11
12
13
String sql =
"select * from product limit 0,10"
;
SQLQuery sqlQuery = session.CreateSQLQuery();
sqlQuery.addScalar(
"id"
,Hibernate.INTEGER);
sqlQuery.addScalar(
"name"
,Hibernate.STRING);
sqlQuery.addScalar(
"addre"
,Hibernate.STRING);
sqlQuery.addScalar(
"des"
,Hibernate.STRING);
List<Object[]> list = sqlQuery.list();
获取SQL查询的持久对象有三种方式实现:
方式1:Hibernate不仅能把查询到的记录封装为包含多个Object数组的List对象返回,还可以把每一条查询到的记录封装成持久对象后返回包含这些对象的List对象。如:
1
2
3
4
5
6
7
String sql =
"select * from product limit 0,10"
;
SQLQuery sqlQuery = session.CreateSQLQuery();
sqlQuery.addEntity(Product .
class
);
List<Product> list = sqlQuery.list();
1
2
3
4
5
6
7
String sql =
"select{p.*} from Product p,Category c where p.category_id=c.id"
;
SQLQuery sqlQuery = session.CreateSQLQuery();
sqlQuery.addEntity(
"p"
,Product.
class
);
List<Product> list = sqlQuery.list();
1
2
3
4
5
6
7
8
9
10
String sql =
"select p.id,p.name from product p,Category c where p.category_id = c.id"
;
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addScalar(
"id"
,Hibernate.INTEGER)
.addScalar(
"name"
,Hibernate.STRING);
sqlQuery.setResultTransformer(Transformers.aliasToBean(Product.
class
));
List<Product> list = sqlQuery.list();
0 0
- Hibernate 中使用原生SQL 查询
- hibernate中使用原生sql查询
- Hibernate中使用原生的sql语句进行查询操作
- Hibernate 使用原生SQL进行查询
- Hibernate原生SQL查询
- hibernate 原生sql查询
- Hibernate原生SQL查询
- Hibernate原生SQL查询
- Hibernate原生SQL查询
- Hibernate原生SQL查询
- Hibernate原生SQL查询
- Hibernate原生SQL查询
- hibernate开发中使用原生语句查询
- tp5中使用原生sql查询总结
- Hibernate 使用原生SQL
- Hibernate 使用原生SQL
- Hibernate的原生SQL查询
- hibernate 原生sql 命名查询
- 推荐 10 款基于 Bootstrap 框架的扩展
- 文章标题
- 百度开放平台-文档中心
- 磁盘基础知识
- 黑马程序员_日记40_ArrayListAdvancedTest
- Hibernate 中使用原生SQL 查询
- JAVA多线程 <六> 一些比较
- 2张图直观解决:Eclipse 的导入Java项目后显示The import java.io.File cannot be resolved 错误
- web 开发速查表
- 数据库的多表查询(详细案例分析)
- java遍历二叉树
- CSS导入HTML的4种方式
- SetImageROI函数设置ROI区域用法
- ajax实现搜索热词下拉列表