1. 当作较为复杂的查询时,hibernate基本的查询无法满足工作需求,就需要使用hibernate提供的原生SQL查询。
2. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。
public class Demo{
@Test
public void function() {
//1.获得Hibernate Session对象
Session session = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 编写SQL语句
String sql = “select * from cst_customer”;
2 创建SQL查询对象
SQLQuery query = session.createSQLQuery(sql);
3 调用方法查询结果
List
for(Object[]objs : list) {
System.out.println(Arrays.toString(objs));
}
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
public class Demo{
@Test
public void function() {
//1.获得Hibernate Session对象
Session session = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 编写SQL语句
String sql = “select * from cst_customer”;
2 创建SQL查询对象
SQLQuery query = session.createSQLQuery(sql);
3 将结果集封装到指定对象中:
query.addEntity(Customer.class);
4 调用方法查询结果
List
for(Object[] objs:list) {
System.out.println(Arrays.toString(objs));
}
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
public class Demo{
@Test
public void function() {
//1.获得Hibernate Session对象
Session session = HibernateUtils.openSession();
//2.打开事务
Transactiontx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 编写SQL语句
String sql = “select * from cst_customer where cust_id = ?”;
2 创建SQL查询对象
SQLQuery query = session.createSQLQuery(sql);
3 设置参数
query.setParameter(0,1L); //索引从 0 开始。
4 指定将结果集放入的对象
query.addEntity(Customer.class);
5 调用方法查询结果
List
System.out.println(list);
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
public class Demo{
@Test
public void function() {
//1.获得Hibernate Session对象
Sessionsession = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 编写SQL语句
String sql = “select * from cst_customer limit ?, ?”;
2 创建SQL查询对象
SQLQuery query = session.createSQLQuery(sql);
3 设置limit参数(从第四个开始,每次抓取5个)
query.setParameter(0,3); //第一个参数为0
query.setParameter(1,5); //第二个参数为5
4 指定将结果集放入的对象
query.addEntity(Customer.class);
5 调用方法查询结果
List
System.out.println(list);
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}