Hibernate原生SQL使用
Hibernate除了支持HQL查询外,还支持原生SQL。 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。 执行SQL查询步骤如下:
1、获取Hibernate Session对象
2、编写SQL语句
3、通过Session的createSQLQuery方法创建查询对象
4、调用SQLQuery对象的addScalar()或addEntity()方法将选出的结果与标量值或实体进行关联,分别用于进行标量查询或实体查询
5、如果SQL语句包含参数,调用Query的setXxxx方法为参数赋值
6、调用Query的list方法返回查询的结果集。
Hibernate使用HQL查询:
public User findUserById(String id) { List<User> list=(List<User>)this.getHibernateTemplate().find("from User where id=?",id); if(list.size()>0){ return (User)list.get(0); }else{ return null; } }
//Hibernate使用SQL(mysql语句,不是sql server)查询
public void entityQuery(){
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
String sql = "select * from person_inf";
List list = session.createSQLQuery(sql).
addEntity(User.class). //指定将查询的记录行转换成User实体
list();
for (Iterator iterator = list.iterator();iterator.hasNext();) {
User user= (User) iterator.next(); //集合的每个元素都是一个User对象
System.out.println("name="+user.getName());
System.out.println("age="+user.getAge());
}
tx.commit();
session.close();
}