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. C# 模拟提交 Form表单的数据

    用 HttpWebRequest Post方法模拟提交Form表单数据时,需要设置 ContentType 为 "application/x-www-form-urlencoded" ...

  2. C#的类,构造函数以及Array阵列的数据填充与绑定

    今天学习,如标题. 创建一个类,字段属性构造函数: Source code: using System; using System.Collections.Generic; using System. ...

  3. 反射(Reflection)的SetValue遇上DBNULL转换为string

    有网友回馈说提供的代码有bug.你可以从这个链接下载得到:http://www.cnblogs.com/insus/p/3384472.html 其中有一个Utility,它是把DataTable转换 ...

  4. 解决64位Windows2003程序字体很小的问题

    先看问题现象: 如图,字小的一B,并且无法通过更改主题字体大小.对话框字体等操作得到解决. 注:该问题可能不限于64位Windows2003,看完解决方法你就明白了,是有个注册表键值缺失或设置不当造成 ...

  5. GitHub简单教程

    Hello World程序是计算机编程中由来已久的惯例,这是一个当你在学习新事物的时候开始的一个简单的小练习.让我们开始GitHub的"Hello World". 你将学会: -  ...

  6. Java总结篇系列:Java String

    String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐,然而,在使用String过程中,又有较多需要注意的细节之处. 1 ...

  7. 使用Toast的setText()实现倒计时

    点击按钮发送短信以后,倒计时3秒钟后退出Activity.本来想用弹出多个Toast的方法实现,后来发现效果不好,因为Toast.LENGTH_LONG显示3秒钟,Toast.LENGTH_SHORT ...

  8. Configure Amazon RDS mysql to store Chinese Characters

    Configure Amazon RDS mysql to store Chinese Characters https://dev.mysql.com/doc/refman/5.7/en/chars ...

  9. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

    http://www.path8.net/tn/archives/951 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述, ...

  10. 【FOL】第三周

    这周还是在改自己的这个框架,被多线程折腾了两天,最终无奈放弃在游戏启动时调用引擎进行图片相关资源的初始化,当然进展还是不错的. 嗯,下面还是以流水的方式继续记录一下本周完成的工作: 1.调通了客户端与 ...