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. 开始MS SQL Server 2016之旅

    下班前一刻,把MS SQL Server 2016安装好,国庆回来之后,就可以学习之旅......

  2. C#的变迁史 - C# 4.0 之并行处理篇

    前面看完了Task对象,这里再看一下另一个息息相关的对象Parallel. Parallel对象 Parallel对象封装了能够利用多核并行执行的多线程操作,其内部使用Task来分装多线程的任务并试图 ...

  3. Entity Framework 的简单介绍与实例

    1.下载与引用 a) 首先需要下载一个oracle clinent 12c 发行版(我这边下载的是发行版)并进行安装,下载内容如下图 B) 创建一个项目,通过Nuget引用  添加ODP.NET    ...

  4. 背水一战 Windows 10 (5) - UI: 标题栏

    [源码下载] 背水一战 Windows 10 (5) - UI: 标题栏 作者:webabcd 介绍背水一战 Windows 10 之 UI 标题栏 示例TitleBarDemo.xaml <P ...

  5. mysql中变量赋值

    http://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变 ...

  6. Eclipse上GIT插件EGIT使用手册

    http://blog.csdn.net/luckarecs/article/details/7427605 Eclipse上GIT插件EGIT使用手册   一_安装EGIT插件 http://dow ...

  7. 操作系统笔记系列 一 Linux

    学习资料: 1.http://www.icoolxue.com/   马士兵 1.Linux 服务器端,目前98%的服务器都是Linux. 2.

  8. jquery学习笔记:获取下拉框的值和下拉框的txt

    <div class="form-group"> <select class="form-control" id="iv_level ...

  9. Foreach原理

    本质:实现了一个IEnumerable接口, 01.为什么数组和集合可以使用foreach遍历? 解析:因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerato ...

  10. 利用Canvas实现360度浏览

    前言:最近几个月来到新公司,主要从事移动端方面的开发,有时候也挺忙挺累的,于是就好一段时间没写博客了.其实自己在这几个月里,自己对canvas以及createjs和egret都有了一定程度上的认识与掌 ...