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. ASP.NET MVC ModelValidator小结

    当用户通过UI输入数据向程序交互时,都会出现一个潜在的错误,数据错误,要检查用户提交的数据是否正确,需要做数据验证,在ASP.NET MVC中,每当Action执行前都会对传入Action的Model ...

  2. 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

    注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...

  3. TreeView使用

    1.添加节点,实现拖拽功能 private void Form1_Load(object sender, EventArgs e) { TreeNode node1 = new TreeNode(); ...

  4. Widget的点击事件

    本文实现Widget中的按钮点击事件,点击一次下面的按钮,上面的数字减少1. 首先是Manifest文件: <?xml version="1.0" encoding=&quo ...

  5. javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

    javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String javax.el.Bean ...

  6. WinForm 窗体应用程序(进阶)之一

    进程: 进程,简单的说,就是让你的程序启动另一个程序. 1.Process.Start("calc");//启动计算器 弊端:只认识系统自带的程序,如果写错系统会崩溃. 2. // ...

  7. Play 中如何使用 Ajax

    Play在内部使用了 jQuery 这个JavaScript库,让我们能够非常方便的进行Ajax操作.同时,为了能在JavaScript中方便地生成某个action对应的Url,Play还提供了一个  ...

  8. imagesLoaded – 检测网页中的图片是否加载

    imagesLoaded 是一个用于来检测网页中的图片是否载入完成的 JavaScript 工具库.支持回调的获取图片加载的进度,还可以绑定自定义事件.可以结合 jQuery.RequireJS 使用 ...

  9. Resumable.js – 基于 HTML5 File API 的文件上传

    Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...

  10. IOS 局域网发送信息

    基于ios 例子WiTap 1.创建本地的服务并设置监听时间检测是否有设备连接. NSNetService * server = [[NSNetService alloc] initWithDomai ...