如何设计DAO更新方法

fai*_*zal 5 java dao

如何为具有多个字段的实体设计DAO类?

例如,对于以下实体:

public class MyEntity{

    private long id;
    private int field1;
    private String field2;
    private Date field3;
    private Date field4;
    private int field5;

}
Run Code Online (Sandbox Code Playgroud)

我应该创建一个DAO类,其中包含每个字段的更新方法,如:

public class MyEntityDao{
    public insert(MyEntity myEntity);
    public delete(MyEntity myEntity);    
    public get(long id);
    public updateField1(MyEntity myEntity)
    public updateField2(MyEntity myEntity)
    public updateField3(MyEntity myEntity)
    public updateField4(MyEntity myEntity)
    public updateField5(MyEntity myEntity)

}
Run Code Online (Sandbox Code Playgroud)

这似乎是合乎逻辑的事情,但我通常只看到一个update()方法的例子.在这种情况下,DAO应该如何确定在数据库中更新哪个字段?它是否只是盲目地更新所有字段,即使只有1个可能已经改变了?或者实体类是否应将标志作为成员来指示哪些字段已更改?

cнŝ*_*ŝdk 2

您只需要传递要更新的实体,DAO 将自动确定更改的字段并将其更新到数据库中。

public update(MyEntity myEntity);
Run Code Online (Sandbox Code Playgroud)

然后DAO获取myEntity的id并更新数据库中的实体。