IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

编程珠玑:对DAO层的一点修改

龙浩的blog 2011-09-25 22:50:39 累计浏览 4,030 次
本机暂存

       由于以前的Domain对象都是不需要序列化的,所以为了操作数据库查询的方便,直接采用继承BaseDomain的方式来完成。这样在传递动态参数的时候,只需要把参数放到Map总,就可以很好的在ibatis配置文件(map.xx来直接获取值)中使用。

       这样导致的一个害处就是对象看起来有直接根本就不需要的属性,即使你添加关键字transient,不少程序员依然在set的时候会费解一些不必要的属性。例如:在insert()设置属性的时候竟然能够setPageNo()。质疑这个很有道理,但是以前一直extends粗暴简单的来完成任务,没有额外的系统设计问题,所以就得过且过,没有继续抽象。

       目前,Domain对象需要额外提供序列化的功能和为API服务,简单粗暴的方式不能继续适应系统要求,所以需要继续抽象。在CRUD的模型中,逐个分析需求变化导致的问题。

  •     insert() , update() , delete() 都可以直接传入对象,不需要额外的值,即使有这样的条件,也建议不动态传值到ibatis中;
  •     find() , list() 需要动态出入参数,同事find和list传入的参数值有所不同;list和find参数存在继承关系;
  •        按照需求,设计抽象有3点:

  •     FindAapter() 提供动态参数的设置;
  •     ListAaapter() 提供分页的参数的设置,继承FindAapter()  接口;
  •     用泛型动态传递Domain对象,让相关返回规范化。
  •        UML关系图如下:

        \"\"

    同分类推荐文章

    1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
    2. Go 实验特性详解 (2026-06-21 10:05:27)
    3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

    查看更多 后端 文章 →

    建议继续学习

    1. 梦幻西游服务器 IO 的一点优化 (累计阅读 4,245)
    2. 可序列化单例模式的遗留问题答案 (累计阅读 3,721)
    3. 极不和谐的 fork 多线程程序 (累计阅读 3,653)
    4. 用YAML构建数据测试DAO层 (累计阅读 2,930)
    5. String的序列化小结 (累计阅读 2,698)
    6. 让数据解析能够做到向前向后完全兼容(最近做项目总结) (累计阅读 2,562)
    7. Serialize/Unserialize破坏单例 (累计阅读 2,569)