| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
cenmin
9年前发布

Spring Hibernate 实现BaseDao

Spring4.0, Hibernate4.0
</div>

 

BaseDao    

package com.school.dao;    import java.io.Serializable;  import java.util.List;    import com.school.util.PageList;    /**   *    * @author Fandy   *   */  public interface BaseDao {     /**    *     * @param hql    * @return    */   <T> T findObject(String hql);      /**    *     * @param hql    * @param objects    * @return    */   <T> T findObject(String hql, Object...objects);      /**    *     * @param cls    * @param id    * @return    */   <T> T findObject(Class<T> cls, Serializable id);      /**    *     * @param sql    * @return    */   <T> T findObjectBySql(String sql);      /**    *     * @param sql    * @param objects    * @return    */   <T> T findObjectBySql(String sql, Object...objects);      /**    *     * @param hql    * @return    */   <T> List<T> findList(String hql);      /**    *     * @param hql    * @param objects    * @return    */   <T> List<T> findList(String hql, Object...objects);      /**    *     * @param cls    * @return    */   <T> List<T> findList(Class<T> cls);      /**    *     * @param sql    * @return    */   <T> List<T> findListBySql(String sql);      /**    *     * @param sql    * @param objects    * @return    */   <T> List<T> findListBySql(String sql, Object...objects);      /**    *     * @param obj    */   <T> void saveObject(T obj);      /**    *     * @param obj    */   <T> void updateObject(T obj);      /**    *     * @param obj    */   <T> void saveOrUpdateObject(T obj);      /**    *     * @param sql    * @return    */   int executeSql(String sql);      /**    *     * @param sql    * @param objects    * @return    */   int executeSql(String sql, Object...objects);      /**    *     * @param hql    * @return    */   int coutObjects(String hql);      /**    *     * @param hql    * @param objects    * @return    */   int countObjects(String hql, Object...objects);      /**    *     * @param hql    * @param page    * @param rows    * @return    */   <T> PageList<T> findPageList(String hql, int page, int rows);      /**    *     * @param hql    * @param page    * @param rows    * @param objects    * @return    */   <T> PageList<T> findPageList(String hql, int page, int rows, Object...objects);        }  

BaseDao实现类    

package com.school.dao.impl;    /**   *    * @author Fandy   *   */    import java.io.Serializable;  import java.util.List;    import org.hibernate.Query;  import org.hibernate.ScrollableResults;  import org.hibernate.Session;  import org.hibernate.SessionFactory;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Repository;    import com.school.dao.BaseDao;  import com.school.util.PageList;    @SuppressWarnings("unchecked")  @Repository("baseDao")  public class BaseDaoImpl implements BaseDao {     @Autowired   private SessionFactory sessionFactory;     Session getSession() {    return sessionFactory.getCurrentSession();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findObject(java.lang.String)    */   @Override   public <T> T findObject(String hql) {    List<T> list = findList(hql);    return (null == list || list.size() == 0) ? null : list.get(0);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findObject(java.lang.String,    * java.lang.Object[])    */   @Override   public <T> T findObject(String hql, Object... objects) {    List<T> list = findList(hql, objects);    return (null == list || list.size() == 0) ? null : list.get(0);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findObject(java.lang.Class,    * java.io.Serializable)    */   @Override   public <T> T findObject(Class<T> cls, Serializable id) {    return (T) getSession().get(cls, id);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findObjectBySql(java.lang.String)    */   @Override   public <T> T findObjectBySql(String sql) {    List<T> list = findListBySql(sql);    return (null == list || list.size() == 0) ? null : list.get(0);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findObjectBySql(java.lang.String,    * java.lang.Object[])    */   @Override   public <T> T findObjectBySql(String sql, Object... objects) {    List<T> list = findListBySql(sql, objects);    return (null == list || list.size() == 0) ? null : list.get(0);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findList(java.lang.String)    */   @Override   public <T> List<T> findList(String hql) {    Query query = getSession().createQuery(hql);    return query.list();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findList(java.lang.String,    * java.lang.Object[])    */   @Override   public <T> List<T> findList(String hql, Object... objects) {    Query query = getSession().createQuery(hql);    setParameter(query, objects);    return query.list();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findList(java.lang.Class)    */   @Override   public <T> List<T> findList(Class<T> cls) {    String hql = "FROM " + cls.getName();    return findList(hql);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findListBySql(java.lang.String)    */   @Override   public <T> List<T> findListBySql(String sql) {    Query query = getSession().createSQLQuery(sql);    return query.list();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findListBySql(java.lang.String,    * java.lang.Object[])    */   @Override   public <T> List<T> findListBySql(String sql, Object... objects) {    Query query = getSession().createSQLQuery(sql);    setParameter(query, objects);    return query.list();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#saveObject(java.lang.Object)    */   @Override   public <T> void saveObject(T obj) {    getSession().save(obj);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#updateObject(java.lang.Object)    */   @Override   public <T> void updateObject(T obj) {    getSession().update(obj);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#saveOrUpdateObject(java.lang.Object)    */   @Override   public <T> void saveOrUpdateObject(T obj) {    getSession().saveOrUpdate(obj);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#executeSql(java.lang.String)    */   @Override   public int executeSql(String sql) {    Query query = getSession().createSQLQuery(sql);    return query.executeUpdate();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#executeSql(java.lang.String,    * java.lang.Object[])    */   @Override   public int executeSql(String sql, Object... objects) {    Query query = getSession().createSQLQuery(sql);    setParameter(query, objects);    return query.executeUpdate();   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#coutObjects(java.lang.String)    */   @Override   public int coutObjects(String hql) {    Query query = getSession().createQuery(hql);    ScrollableResults sr = query.scroll();    sr.last();    return sr.getRowNumber() == -1 ? 0 : sr.getRowNumber() + 1;   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#countObjects(java.lang.String,    * java.lang.Object[])    */   @Override   public int countObjects(String hql, Object... objects) {    Query query = getSession().createQuery(hql);    setParameter(query, objects);    ScrollableResults sr = query.scroll();    sr.last();    return sr.getRowNumber() == -1 ? 0 : sr.getRowNumber() + 1;   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findPageList(java.lang.String, int, int)    */   @Override   public <T> PageList<T> findPageList(String hql, int page, int rows) {    Query query = getSession().createQuery(hql);    return findPageList(query, page, rows);   }     /*    * (non-Javadoc)    *     * @see com.school.dao.BaseDao#findPageList(java.lang.String, int, int,    * java.lang.Object[])    */   @Override   public <T> PageList<T> findPageList(String hql, int page, int rows,     Object... objects) {    Query query = getSession().createQuery(hql);    setParameter(query, objects);    return findPageList(query, page, rows);   }     <T> PageList<T> findPageList(Query query, int page, int rows) {    ScrollableResults sr = query.scroll();    sr.last();    int count = sr.getRowNumber() == -1 ? 0 : sr.getRowNumber() + 1;    query.setFirstResult((page - 1) * rows);    query.setMaxResults(page * rows);    return new PageList<T>(page, rows, count, query.list());   }     void setParameter(Query query, Object... objects) {    for (int i = 0; i < objects.length; i++) {     query.setParameter(i, objects[i]);    }   }  }  

[代码]PageList    

package com.school.util;  /**   * @author Fandy   */  import java.util.List;    public class PageList<T> {     private int page;   private int rows;   private int total;   private List<T> list;     public PageList() {    super();   }     public PageList(int page, int rows, int total, List<T> list) {    super();    this.page = page;    this.rows = rows;    this.total = total;    this.list = list;   }     public int getPage() {    return page;   }     public void setPage(int page) {    this.page = page;   }     public int getRows() {    return rows;   }     public void setRows(int rows) {    this.rows = rows;   }     public List<T> getList() {    return list;   }     public void setList(List<T> list) {    this.list = list;   }     public int size(){    return null==list?0:list.size();   }     public int getTotal() {    return total;   }     public void setTotal(int total) {    this.total = total;   }    }