您的位置:首页 > 其它

关于HibernateDaoSupport中的getHibernateTemplate().execute及executeFind方法

2013-03-02 13:20 330 查看
这两个方法都是为了Spring在接管Hibernate之后,可以对HibernateDaoSupport进行灵活的扩展而用的。

二者的主要区别在于,execute返回的是一个Object,而executeFind方法返回的是一个List.

//使用executeFind

protected void deleteByVehicleId(final int vehicleId) throws Exception {

try {

this.getHibernateTemplate().executeFind(

new HibernateCallback() {

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query q = session.createQuery("delete from Vehicle v where v.id=" + vehicleId );

q.executeUpdate();

return null;

}

});

} catch (Exception e) {

throw e;

}

}

//使用execute

public String updateScreen(final int screenId,final String configStr){

Object o = getHibernateTemplate().execute(new HibernateCallback() {

public Object doInHibernate(Session session) throws HibernateException, SQLException {

SQLQuery query = session.createSQLQuery("update HPS_ParkingLotScreen set config_Str='" + configStr + "' where id=" +screenId);

try{

int ii = query.executeUpdate();

System.out.println(ii);

return "success";

}catch (Exception e) {

e.printStackTrace();

}

return "fail";

}

});

return o.toString();

}

另外,在new HibernateCallback的内部类的doInHibernate方法中,它的返回值,就是execute或executeFind方法的返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: