一个简单的dao设计

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

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

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

  • 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中的VendorModelDao, VendorDbConnect, VendorDbDaoDriver

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏岑玉海

Hbase 学习(四) hbase客户端设置缓存优化查询

我们在用hbase的api对hbase进行scan操作的时候,可以设置caching和batch来提交查询效率,那它们之间的关系是啥样的呢,我们又应该如何去设...

38310
来自专栏安恒网络空间安全讲武堂

Sqli_labs65关通关详解(下)

less-31 逻辑跟30关一样,只不过 $id = '"' .$id. '"'; $sql="SELECT * FROM users WHERE id=($i...

2508
来自专栏Seebug漏洞平台

从WordPress SQLi谈PHP格式化字符串问题

0x00 背 景 近日,WordPress爆出了一个SQLi漏洞,漏洞发生在WP的后台上传图片的位置,通过修改图片在数据库中的参数,以及利用php的 sp...

3388
来自专栏北京马哥教育

10分钟学会理解和解决MySQL乱码问题

本文将详细介绍MySQL乱码的成因和具体的解决方案。在阅读本文之前,强烈建议对字符集编码概念还比较模糊的同学 阅读下博主之前对相关概念的一篇科普:十分钟搞清字符...

2678
来自专栏小樱的经验随笔

HUST 1555 A Math Homework

1555 - A Math Homework 时间限制:1秒 内存限制:128兆 338 次提交 131 次通过 题目描述 QKL is a poor a...

3298
来自专栏www.96php.cn

Discuz!X数据库函数操作命令大全

函数 功能DB::table($tablename)获取正确带前缀的表名,转换数据库句柄DB::delete($tablename, 条件,条数限制)删除表中的...

3518
来自专栏Seebug漏洞平台

从WordPress SQLi谈PHP格式化字符串问题

近日,WordPress爆出了一个SQLi漏洞,漏洞发生在WP的后台上传图片的位置,通过修改图片在数据库中的参数,以及利用php的sprintf函数的特性,在删...

38511
来自专栏Java帮帮-微信公众号-技术文章全总结

day26.MySQL【Python教程】

1116
来自专栏ml

HDUOJ-----2399GPA

GPA Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...

3274
来自专栏林冠宏的技术文章

C++ 制作 json 数据 并 传送给服务端(Server) 的 php

json数据格式,这里举个基础的例子:       {"name":"LGH"} 在C++里面,我用个函数把特定的数据组合成 json 1 void toJs...

2055

扫码关注云+社区