-------------------siwuxie095
本地 SQL 查询
1、简单介绍
采用 HQL 或 QBC 查询时,Hibernate 生成标准的 SQL 语句,
适用于所有的数据库平台,因此这两种查询方式都是跨平台的
但有的数据库可能需要底层数据库的 SQL 方言,来生成一些
特殊的查询语句
此时,可以使用 Hibernate 提供的本地 SQL 查询
2、使用 SQLQuery 对象实现本地 SQL 查询
以客户和联系人为例(一对多)
如:
/* * (1) 创建 SQLQuery 对象 * * 调用 session 的 createSQLQuery() 方法, * 参数是本地 sql 语句,返回值是 SQLQuery * 类型,创建以接收 */ SQLQuery sqlQuery=session.createSQLQuery("select * from t_customer"); /* * (2) 调用方法得到结果 * * 调用 sqlQuery 的 list() 方法,返回值是 List 类 * 型,创建以接收 * * 注意:此时返回的 List 的每部分都是一个数组,而 * 不是 Customer 对象,所以指定泛型为 Object[] */ List<Object[]> list=sqlQuery.list(); for (Object[] objects : list) { //Arrays.toString() 将数组作为字符串输出 System.out.println(Arrays.toString(objects)); } |
修改:让返回的 List 中每部分都是一个 Customer 对象
/* * (1) 创建 SQLQuery 对象 */ SQLQuery sqlQuery=session.createSQLQuery("select * from t_customer"); /* * (2) 让返回的 List 中每部分都是一个 Customer 对象 * * 调用 sqlQuery 的 addEntity() 方法,参数是实体类的 * class,设置要将数据放到哪个实体类的对象中 */ sqlQuery.addEntity(Customer.class); /* * (3) 调用方法得到结果 */ List<Customer> list=sqlQuery.list(); |
【made by siwuxie095】