admin 发表于 2015-6-12 13:14

项目开发中基类BaseDao的实现

项目开发中基类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.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.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);
    }
   
   
}


z962416 发表于 2015-10-27 09:59

我都是手写dao层,累额
页: [1]
查看完整版本: 项目开发中基类BaseDao的实现