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 IOperateDAO 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 insert(final String SQL, final Object[] params)
   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 {
......
后台就到这来吧!再说前台。

CRM项目经验总结-从DAO层到链接数据池的更多相关文章

  1. 从dao层查出的数据到页面时数值都是零的异常

    异常问题: IllegalArgumentException: argument type mismatch at cn.tedu.utils.BeanListHandler.handle(BeanL ...

  2. 反射实现增删改查(DAO层)——查询数据

    先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 数据查询 * */ @Override public List<?> queryObject(List<Map& ...

  3. 反射实现增删改查(DAO层)——修改数据

    先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 修改数据 * */ @Override public void updateObject(Object object, Strin ...

  4. 反射实现增删改查(DAO层)——删除数据

    先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 删除数据 */ @Override public void deleteObject(List<Map<String, ...

  5. 反射实现增删改查(DAO层)——插入数据

    先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * 插入数据 */ @Override public void addObject(Object object, String table ...

  6. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转

    表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的 ,DAO层就是将访问数 ...

  7. 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层

    作者:nnngu 项目源代码:https://github.com/nnngu/nguSeckill 这是一个整合IDEA+Maven+SSM框架的高并发的商品秒杀项目.我们将分为以下几篇文章来进行详 ...

  8. IDEA项目搭建四——使用Mybatis实现Dao层

    一.引入mybatis及mysql的jar包 可以从阿里云上面查找版本,db操作放在dao层所以打开该层的pom.xml文件,找到<dependencies>节点增加两个引入 <de ...

  9. SSH 项目中 用Hibernate底层 简单的封装DAO层

    废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends Hiberna ...

随机推荐

  1. 打开IE错误解决方法

    1. 502.1 Internal Server Error Handle svc-Integraged has a bad module ManagedPipelineHandle解决方法:此种情况 ...

  2. var 的使用

    List<Enterprise> epList = ViewBag.epList; foreach (var item in epList){ //todo ... } 当 List< ...

  3. Needham-Schroeder加密算法小结

    自己整理了下关于Needham-Schroeder加密算法的相关知识,如下图示.

  4. 最近Google经常打不开?

    最近听好多同事讲google打不开,无法进行搜索,用了代理之后速度还是很慢,而百度搜索又不佳… 就在此分享一些google地址: 个人收藏夹的: 203.208.46.144(这段时间推荐使用这4个地 ...

  5. Cursors in MySQL Stored Procedures

    https://www.sitepoint.com/cursors-mysql-stored-procedures/ After my previous article on Stored Proce ...

  6. Oracle 数据库基础学习 (二) 学习小例子:创建一个表,记录商品买卖的情况

      运行环境:Oracle database 11g + PL/SQL Developer ex: --创建一个表 create table plspl_test_product( --加入not n ...

  7. Spring web应用最大的败笔

    第一篇 介绍下IOC DI Spring主要是业务层框架,现在已经发展成为一个完整JavaEE开发框架,它的主要特点是IoC DI和AOP等概念的融合,强项在面向切面AOP.推出之初因为Ioc/AOP ...

  8. Scalaz(51)- scalaz-stream: 资源使用安全-Resource Safety

    scalaz-stream是一个数据流处理工具库,对资源使用,包括:开启文件.连接网络.连接数据库等这些公共资源使用方面都必须确定使用过程的安全:要保证在作业终止时能进行事后处理程序(finalize ...

  9. 标签栏使用Demo二

    // //  PHTagViewFrame.m //  标签的使用二 // //  Created by 123 on 16/9/6. //  Copyright © 2016年 彭洪. All ri ...

  10. [javaSE] 反射-动态加载类

    Class.forName(“类的全称”) ①不仅表示了类的类类型,还代表了动态加载类 ②请大家区分编译,运行 ③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 Ⅰ所有的new对象都是静态加载 ...