spring接着又把業務類中的查詢也封裝成了find()
//用來實現分頁 /*HibernateTemplate ht=this.getHibernateTemplate(); DetachedCriteria criteria=DetachedCriteria.forClass(Paper.class); ht.findByCriteria(criteria, firstResult, maxResults);*/ this.getHibernateTemplate().findByCriteria(criteria, firstResult, maxResults) //比較局限。User中幾個有值就查詢幾個(主鍵和外鍵是無法的)條件的拼接只能是等於like //常用登錄查詢 this.getHibernateTemplate().findByExample(User); //刪除一個數組 this.getHibernateTemplate().deleteAll(new ArrayList()); //命名查詢 this.getHibernateTemplate().findByNamedQuery("name of the hql"); //第一個數組是變量名的數組,第二個是變量值的數組(冒號的命名查詢) this.getHibernateTemplate().findByNamedParam("from :name", new Object[], new String[]); //立即清理緩存,立刻執行 this.getHibernateTemplate().flush(); //按照主鍵查詢 this.getHibernateTemplate().get(entityClass, id);//load //增刪改 this.getHibernateTemplate().bulkUpdate("hql ?",1,"abc",new Date());
模板和回調
1、模板雖好,但有得有失
a、有時候我們需要更加靈活
2、spring提供了回調機制
a、模板固話了不變得、流程化的內容,簡化使用
b、回調允許我們在固化的流程中加入變化的內容
public List<ClaimVoucher> find(final int first, final int pageSize) { //模板和回調-->回調就是為了解決模板中不能實現的 return this.getHibernateTemplate().executeFind(new HibernateCallback() { @Override public List doInHibernate(Session arg0) throws HibernateException, SQLException { // TODO Auto-generated method stub return arg0.createQuery(" from ClaimVoucher c") .setFirstResult((first-1)*pageSize) .setMaxResults(pageSize) .list(); } });