【发布时间】:2015-09-05 16:16:48
【问题描述】:
我正在开发一个小型商务应用程序,我需要知道如何传递复杂的逻辑来指示要从数据库中获取哪些客户端
这是我的 ClientDAO 类:
public class ClientDAO {
public void save(Client clt) {
}
public Client find(int id) {
return null;
}
public void update(Client clt) {
}
public void delete(Client clt) {
}
}
这是一个普通的 CRUD 类,但是如果我需要从日期 xx 到 yy 获取所有客户端,我需要添加另一个重载的 find 方法??如果我想找到所有年龄在 xx 和 yy 之间的客户,我会再找一个功能吗? 这似乎不是一个好的设计
我知道我做错了什么,我想知道正确的做法。
PS:我将使用没有任何 ORM 的 JDBC
【问题讨论】:
-
你打算使用像 Hibernate 这样的 ORM 吗?
-
不,我以前只使用 jdbc
-
是的,您必须为每个案例添加一个查找器方法。请记住,这个 DAO 类只是一个接口,它的存在是为了让用户知道通过什么可以找到对象。这并不意味着它的实现会有重复的代码——客户不在乎,对客户来说也没关系。如果有重复,那就好好写代码去掉(可能内部复用一些find方法),但是对外接口一定要清晰。
-
好吧,您可以创建一个采用
Client对象的方法。然后,在该方法中,您可以检查该字段是否为空。如果不为空,则为该字段创建where查询... -
@kucing_terbang 当然假设您不需要
WHERE column IS NULL查询。
标签: java sql model-view-controller javafx dao