一个简单的dao设计

最近把框架里的数据库连接池做好了,整个dao差不多也算完成了(因为懒,所以部分数据库驱动还没写!).

整个dao由连接对象和解析驱动两个部分组成,大概就是下面这个样子

Dao.png

连接对象主要实现如下方法:

  • addServer 添加连接对象到连接池
  • getServer 从连接池中取出一个对象
  • query 发起只读(R)查询并返回PDO游标
  • exec 发起增删改(CDU)操作,返回受影响的行数

解析器的作用是将操作状态转化为sql语句,主要实现以下功能:

  • distinct 是否使用distinct去重
  • table 设置表/别名
  • sql 直接设置查询语句而不需要构造
  • field 设置要查询的字段
  • join 设置要join的目标
  • union 设置union的目标
  • where 设置查询条件和参数
  • group 设置分组查询
  • having 设置分组查询条件
  • order 设置排序
  • limit 设置要取出的偏移位置和取出数量
  • fetchAll 取出所有数据
  • fetch 取出一行数据
  • fetchColumn 取出第一行第一个字段的数据
  • insert 插入数据
  • update 更新数据
  • query 查询数据
  • delete 删除数据

其中insert,update,query,delete由于数据库之间的差异,由各自的驱动来实现.

最后对dao封装一些常用方法:

  • findAll 根据条件查询所有结果
  • find 根据条件查询一条结果
  • findColumn 根据条件取出指定字段的值
  • insert 插入数据
  • update 根据条件更新数据
  • delete 根据条件删除数据
  • count 根据条件获取满足的记录数

详情可参见MiniCore中的Vendor\Model\Dao, Vendor\Db\Connect, Vendor\Db\Dao\Driver

标签: pdo, dao

仅有一条评论

  1. 贱人王彬彬 贱人王彬彬

    牛逼

添加新评论