用Hibernate直接执行hql语句,不直接操纵对象
例子一:
public int executeSQL(String sql, Map<String, Object> params) { SQLQuery sqlquery = getSession().createSQLQuery(sql); if (params != null) { sqlquery.setProperties(params);//传值 } return sqlquery.executeUpdate(); }
例子二:
public void updateParameter(String configureid, String configurevalue) { String hql = "UPDATE Ffconfigure SET configurevalue=:configurevalue WHERE configureid=:configureid"; SQLQuery sqlquery = getSession().createSQLQuery(hql); Map<String,Object> map = new HashMap<String,Object>(); map.put("configurevalue",configurevalue); map.put("configureid",configureid); sqlquery.setProperties(map); sqlquery.executeUpdate(); }
例子三:
public void updateParameter(final String configureid, final String configurevalue) throws Exception { getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { String hql = "UPDATE Ffconfigure SET configurevalue=? WHERE configureid=?"; Query q = session.createQuery(hql); q.setString(0, configureid); q.setString(1, configurevalue); q.executeUpdate(); return null; } }); }
例子一,和例子二起始是一样的,都用了SQLQuery ,很好用。
例子三用的是Hibernate的回调,spring配了事务的情况,update时后台会发sql语句,但是数据库不更新,不知道为什么。