我正在尝试创建SQL
查询对象的层次结构。我的基类将命名为Query。它将具有类似Query.setTable("tableName")
的方法。
然后,我计划让SelectiveQuery
对象扩展Query对象。该对象将具有类似SelectiveQuery.where("aColumn","=","123")
的方法。
然后,我计划将UpdateQuery
,SelectQuery
,DeleteQuery
和CountQuery
都扩展为SelectiveQuery
。当我试图弄清楚如何创建InsertQuery
类时,我会陷入困境。我希望它扩展查询,但不扩展SelectiveQuery
。
更重要的是,InsertQuery
和UpdateQuery
将共享某些相同的方法,例如setValue("aColumn","aValue")
。我宁愿仅将UpdateQuery
和InsertQuery
的方法保持在一个位置。我该如何解决?如果我在PHP
中编程。我想我会用特质来做到这一点。
最佳答案
您可以用mixin代替继承,即引入另一个类(例如Columns),InsertQuery和SelectiveQuery将把该类作为成员,因此语法为insertQuery.columns().setValue("aColumn", "aValue")
。另外,在这里查看:querydsl。