有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重复地从对象列表更新数据库中的记录

我有一个清单,上面写着:

public class Foo {
    public String title;
    public String subject;
}

例如:List<Foo> mFoo = new ArrayList<Foo>();

我的数据库中有一个同名、属性相同的表

这个列表有大约1000个对象。第一次处理此列表时,所有对象都将存储在数据库中

下一次,列表中的一些对象将更改,或者一些新对象也将添加它。问题就在这里

如何更新并将新对象添加到数据库中,以避免将数据库中存储的所有对象加载到其他列表中,然后比较这两个列表

是否存在某种方式可以最大限度地减少对数据库的访问?(我不想每次加载1000个对象)

编辑1:扩展信息

我从解析外部源数据(html代码)的方法中获取List<Foo> mFoo。然后我将对象作为Foo保存在数据库中

当我保存一个对象时,我会得到一个id

public class Foo {
    private String id; 
    public String title;
    public String subject;
}

每次执行该方法时,我都会得到一个列表,其中可能包含数据库中已经存在的对象Foo,但我没有它的id,因为它们是新实例


共 (1) 个答案

  1. # 1 楼答案

    我建议使用一些标志,将实例标记为肮脏:

    public class Foo {
      private String title;
      private String subject;
      private boolean isDirty=true;
    
    
      public void onPersist(){
        this.isDirty=false;
      }
    
      public String setTitle(String title){
        this.isDirty=true;
        this.title=title;
      }
    
      //more setters und getters
    
    }
    

    编辑1

    正如d'alar'cop指出的,你似乎别无选择,只能根据标题和/或主题查询数据库

    但是根据你的标签,你正在使用sqlite。如果可以控制tabledefinition,可以在create语句中查看带有唯一约束的ON CONFLICT [REPLACE|IGNORE]子句。这样你就可以插入你的列表,让数据库完成它的工作

    致以最良好的祝愿, 山姆