【老王公众号】

CRM项目经验总结-从DAO层到链接数据池

#IDAO接口 定义项目中所有板块相似功能 也是整个项目的根接口 
public interface IDAO {
     /**
      * 新增数据 @param SQL sql查询语句  @param params 参数数组 @wonter
      */
    public int insert(final String SQL, final Object[] params)
        throws CRMDBConnException, CRMSQLException;
     /**
      * 查询 要求传入查询表对应的BeanCalss @param SQL sql查询语句 @param clazz  查询表对应的BeanCalss @author wonter 
      */
    public List findAll(final String SQL, Class clazz)
        throws CRMDBConnException, CRMSQLException;
     /**
      * @param SQL sql更新语句  @param bean 更新表对应的bean实例  @author wonter
      */
     public int update(final String SQL, final Object bean)
        throws CRMDBConnException, CRMSQLException;
     
     /**
      *  删除单条数据 @param SQL  sql删除语句  @param id 主键编号 @author Lyee
      */
     public int delete(final String SQL, final Object id)
        throws CRMDBConnException, CRMSQLException;
    }

#ICompanyDAO接口继承IDAO 空接口 公司板块这是程序员开始着手的地方
public interface ICompanyDAO extends IDAO {
 
}

#DAOAdapter类 适配器 通过包装一个需要适配的对象,把原接口IDAO 转换成目标接口。
public abstract class DAOAdapter {
     /**
      * 构造方法
      */
     public DAOAdapter() {
      // TODO Auto-generated constructor stub
     }
     /**
      * 查询 要求传入查询表对应的BeanCalss @param SQL sql查询语句 @param clazz  查询表对应的BeanCalss @author wonter 
      */ 
     public List findAll(final String SQL, Class clazz)
       throws CRMDBConnException, CRMSQLException {
      return null;
     }
     /**
      * 新增数据 @param SQL sql查询语句  @param params 参数数组 @wonter
      */ 
     public int delete(String SQL, Object id)
       throws CRMDBConnException, CRMSQLException {
      return 0;
     }
    }
#CompanyDAO类 具体实现类 每一个DAO可以实现一个DAOAdapter适配器,也可以直接实现I**DAO。这看实现是否完全。 如果实现不全面,直接实现适配器继承接口。
public class CompanyDAO extends DAOAdapter implements ICompanyDAO {
     /**
      * CompanyDAOde的空构造 @author wonter
      */
     public CompanyDAO() {
    }
     /**
      * 删除单条数据
      * @param SQL
      * sql删除语句
      * @param id
      * 主键编号
      */
     public int delete(String SQL, Object id) throws CRMDBConnException,
       CRMSQLException {
      try {
       return DAOUtil.getInstance().delete(SQL, id);
     
      } catch (Exception e) {
     
       e.printStackTrace();
      }
      return 0;
     }
    }
#DAOUtil类 工具类 用于连接数据库
public class DAOUtil {  
     private DAOUtil() {
     #空构造
     }
    /**
      * 获得DAOUtil的实例
      * @return 返回 DAOUtil实例
      */
    public static DAOUtil getInstance() throws InstantiationException, IllegalAccessException {
      return (DAOUtil) DAOUtil.class.newInstance() ;
     } 
     /**
      * 删除单条数据
      * @param SQL
      * sql删除语句
      * @param id
      * 主键编号
      */
     public int delete(final String SQL, final Object id)
       throws CRMDBConnException, CRMSQLException {
      int flag = -1;
      Object[] params = { id };
      QueryRunner qr = CRMQueryRunner.getInstance();
      try {
       flag = qr.update(SQL, params);
     
      } catch (Exception e) {
       throw new CRMSQLException("SQl Execute Exception", e);
      }
      return flag;
     }
    }
CRMQueryRunner类 数据连接 单例设计模式
public final class CRMQueryRunner extends QueryRunner {
......
后台就到这来吧!再说前台。

 

posted @ 2013-12-23 17:06  CTO老王  阅读(759)  评论(0编辑  收藏  举报