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 { ...... 后台就到这来吧!再说前台。
技术微信群:
加微信:wonter 发送:技术Q
医疗微信群:
加微信:wonter 发送:医疗Q
更多文章关注公众号:
加微信:wonter 发送:技术Q
医疗微信群:
加微信:wonter 发送:医疗Q
更多文章关注公众号:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】