你的位置:首页 > Java教程

[Java教程]SSH架构BaseDao实现


package cn.itcast.dao;import java.io.Serializable;import java.util.List;/** * BaseDao * @author Administrator * * @param <T> */public interface BaseDao<T> {  /**   * 保存一个对象   *    * @param o   * @return   */   public Serializable save(T o);    /**   * 删除一个对象   *    * @param o   */   public void delete(T o);    /**   * 更新一个对象   *    * @param o   */   public void update(T o);    /**   * 保存或更新对象   *    * @param o   */   public void saveOrUpdate(T o);    /**   * 查询   *    * @param hql   * @return   */   public List<T> find(String hql);    /**   * 查询集合   *    * @param hql   * @param param   * @return   */   public List<T> find(String hql, Object[] param);    /**   * 查询集合   *    * @param hql   * @param param   * @return   */   public List<T> find(String hql, List<Object> param);    /**   * 查询集合(带分页)   *    * @param hql   * @param param   * @param page   *      查询第几页   * @param rows   *      每页显示几条记录   * @return   */   public List<T> find(String hql, Object[] param, Integer page, Integer rows);    /**   * 查询集合(带分页)   *    * @param hql   * @param param   * @param page   * @param rows   * @return   */   public List<T> find(String hql, List<Object> param, Integer page, Integer rows);    /**   * 获得一个对象   *    * @param c   *      对象类型   * @param id   * @return Object   */   public T get(Class<T> c, Serializable id);    /**   * 获得一个对象   *    * @param hql   * @param param   * @return Object   */   public T get(String hql, Object[] param);    /**   * 获得一个对象   *    * @param hql   * @param param   * @return   */   public T get(String hql, List<Object> param);    /**   * select count(*) from 类   *    * @param hql   * @return   */   public Long count(String hql);    /**   * select count(*) from 类   *    * @param hql   * @param param   * @return   */   public Long count(String hql, Object[] param);    /**   * select count(*) from 类   *    * @param hql   * @param param   * @return   */   public Long count(String hql, List<Object> param);    /**   * 执行HQL语句   *    * @param hql   * @return 响应数目   */   public Integer executeHql(String hql);    /**   * 执行HQL语句   *    * @param hql   * @param param   * @return 响应数目   */   public Integer executeHql(String hql, Object[] param);    /**   * 执行HQL语句   *    * @param hql   * @param param   * @return   */   public Integer executeHql(String hql, List<Object> param);  }

package cn.itcast.daoImpl;import java.io.Serializable;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import cn.itcast.dao.BaseDao;@Repository("BaseDAO")@SuppressWarnings("all")/** * BaseDaoImpl * @author Administrator * * @param <T> */public class BaseDaoImpl<T> implements BaseDao<T> {    private SessionFactory sessionFactory;    public SessionFactory getSessionFactory() {    return sessionFactory;  }  @Autowired  public void setSessionFactory(SessionFactory sessionFactory) {    this.sessionFactory = sessionFactory;  }  private Session getCurrentSession() {     return sessionFactory.getCurrentSession();   }    public Serializable save(T o) {    return this.getCurrentSession().save(o);  }  public void delete(T o) {    this.getCurrentSession().delete(o);  }  public void update(T o) {    this.getCurrentSession().update(o);  }  public void saveOrUpdate(T o) {    this.getCurrentSession().saveOrUpdate(o);  }  public List<T> find(String hql) {    return this.getCurrentSession().createQuery(hql).list();  }  public List<T> find(String hql, Object[] param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.length > 0) {       for (int i = 0; i < param.length; i++) {         q.setParameter(i, param[i]);       }     }     return q.list();  }  public List<T> find(String hql, List<Object> param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.size() > 0) {       for (int i = 0; i < param.size(); i++) {         q.setParameter(i, param.get(i));       }     }     return q.list();  }  public List<T> find(String hql, Object[] param, Integer page, Integer rows) {    if (page == null || page < 1) {       page = 1;     }     if (rows == null || rows < 1) {       rows = 10;     }     Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.length > 0) {       for (int i = 0; i < param.length; i++) {         q.setParameter(i, param[i]);       }     }     return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();   }  public List<T> find(String hql, List<Object> param, Integer page,      Integer rows) {    if (page == null || page < 1) {       page = 1;     }     if (rows == null || rows < 1) {       rows = 10;     }     Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.size() > 0) {       for (int i = 0; i < param.size(); i++) {         q.setParameter(i, param.get(i));       }     }     return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list();  }  public T get(Class<T> c, Serializable id) {    return (T) this.getCurrentSession().get(c, id);  }  public T get(String hql, Object[] param) {    List<T> l = this.find(hql, param);     if (l != null && l.size() > 0) {       return l.get(0);     } else {       return null;     }  }  public T get(String hql, List<Object> param) {    List<T> l = this.find(hql, param);     if (l != null && l.size() > 0) {       return l.get(0);     } else {       return null;     }  }  public Long count(String hql) {    return (Long) this.getCurrentSession().createQuery(hql).uniqueResult();  }  public Long count(String hql, Object[] param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.length > 0) {       for (int i = 0; i < param.length; i++) {         q.setParameter(i, param[i]);       }     }     return (Long) q.uniqueResult();  }  public Long count(String hql, List<Object> param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.size() > 0) {       for (int i = 0; i < param.size(); i++) {         q.setParameter(i, param.get(i));       }     }     return (Long) q.uniqueResult();  }  public Integer executeHql(String hql) {    return this.getCurrentSession().createQuery(hql).executeUpdate();  }  public Integer executeHql(String hql, Object[] param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.length > 0) {       for (int i = 0; i < param.length; i++) {         q.setParameter(i, param[i]);       }     }     return q.executeUpdate();   }  public Integer executeHql(String hql, List<Object> param) {    Query q = this.getCurrentSession().createQuery(hql);     if (param != null && param.size() > 0) {       for (int i = 0; i < param.size(); i++) {         q.setParameter(i, param.get(i));       }     }     return q.executeUpdate();  }}

package cn.itcast.dao;import cn.itcast.entity.TEmail;/** * EmailDao * @author Administrator * */public interface TEmailDao {  public TEmail Login(String LoginName,String Password);    public TEmail FindByEmail(String param);    public Integer count(String param);    public void saveOrUpdate(TEmail T);    public void save(TEmail T);    public void update(TEmail T);    public TEmail get(Integer id);}

package cn.itcast.daoImpl;import cn.itcast.dao.BaseDao;import cn.itcast.dao.TEmailDao;import cn.itcast.entity.TEmail;/** * EmailDao实现类调用BaseDao实现EmailDao中的方法 * @author Administrator * */public class TEmailDaoImpl implements TEmailDao {  private BaseDao<TEmail> baseDao;    public BaseDao<TEmail> getBaseDao() {    return baseDao;  }  public void setBaseDao(BaseDao<TEmail> baseDao) {    this.baseDao = baseDao;  }  public TEmail Login(String LoginName,String Password) {    String hql="From TEmail where loginName=? and password=?";    return baseDao.get(hql, new Object[]{LoginName,Password});  }  public TEmail FindByEmail(String param) {    String hql="From TEmail where email=?";    return baseDao.get(hql, new Object[]{param});  }  public Integer count(String param) {    String hql="Select count(*) From TEmail where email=?";    Long s=baseDao.count(hql, new Object[]{param});    return s.intValue();  }    public void saveOrUpdate(TEmail T){    baseDao.saveOrUpdate(T);  }    public void save(TEmail T){    baseDao.save(T);  }    public void update(TEmail T){    baseDao.update(T);  }  public TEmail get(Integer id) {    return baseDao.get(TEmail.class, id);  }    }