HibernateCallback是回調函數,是一個介面,該介面只有一個方法doInHibernate(org.hibernate.Session session), 這個方法體就是Spring執行的持久化操作。(上面的函數,是用hirbernate的回調函數來刪除id,因為類型是int,所以最後r ...
1 public List getList(long id){ 2 String sql="select 欄位 from 對象"+" where p.id="+id; 3 Session sess=null; 4 try{ 5 sess=this.getSession(); 6 SQLQuery q = sess.createSQLQuery(sql); 7 return q.list(); 8 }finally{ 9 if(sess!=null){ 10 this.releaseSession(sess); 11 } 12 } 13 }
public int delete(final long id) { Object obj = this.getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { String hql = "delete 對象 where id=:id"; return new Integer(session.createQuery(hql).setLong( "id", id).executeUpdate()); } }); return ((Integer) obj).intValue(); }HibernateCallback是回調函數,是一個介面,該介面只有一個方法doInHibernate(org.hibernate.Session session), 這個方法體就是Spring執行的持久化操作。(上面的函數,是用hirbernate的回調函數來刪除id,因為類型是int,所以最後return的時候需要轉換一下類型。) 同理update:
public int update(final long fId,final long cId) { Object obj=this.getHibernateTemplate().execute( new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { String hql = "update 對象 set"+ " bId="+cId+ " where bId="+fId; Query q=session.createQuery(hql); return new Integer(q.executeUpdate()); } } ); return ((Integer)obj).intValue(); }
public List<?> getList(boolean justEnabled){ String sql="from 對象 c"; if(justEnabled){ sql=sql+" where c.enabled='Y'"; } return this.getHibernateTemplate().find(sql); }
(此處的c為別名)