一个简单的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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2577
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2536
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2645
来自专栏落花落雨不落叶

canvas画简单电路图

61811
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4878
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4708
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3145
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2762

扫码关注云+社区