zoukankan      html  css  js  c++  java
  • dbflow 批量 增删查改

    @ModelContainer
    @Table(database = DemoDatabase.class)
    class Person extends BaseModel implements Serializable {
        @PrimaryKey()
        int uid;
        @Column
        int age;
        @Column
        String name;
    
        ....
        ....  
    }

    下面例子主要用以上实体类。

    1、可以通过增加外键来关联查询

    // 比如增加infoId作为外键
    
    // 1 查询
    // 使用Table类进行字段查询
    List<Person> persons = new Select().from(Person.class)
                    .where(Person_Table.infoId.eq(infoId))
                    .queryList();
    
    // 2 删除
    // 可通过写Condition条件进行删除。
    SQLCondition condition = Condition.column(Person_Table.infoId.getNameAlias()).eq(infoId);
    
    Delete.table(Person.class).where(condition);

    2、通过in进行操作。

    List<Integer> uidList = new ArrayList<>();
    SQLCondition condition = Condition.column(Person_Table.uid.getNameAlias()).in(uidList);
    
    // 1 查询
    List<Person> persons = new Select().from(Person.class)
                    .where(condition)
                    .queryList();
    
    // 2 删除
    Delete.table(Person.class, condition);

    dbflow保存操作:

    在github 的 issue上有一个bug,上面说,db.reset();后,保存会出现主键是唯一的异常。我更新了beta6后,发现不能使用一个批量保存list的方法了。

    即是使用:

    new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)).onExecute();

    在save方法上出现如下异常:

    android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique
    ....
    ....
    ....

    这个相关联的类以及方法,全部在beta6版本中去除。然后只提供了事务管理。

    让我们自己去实现事务批量保存,结果可以了。完美兼容。

    DatabaseDefinition database = FlowManager.getDatabase(DemoDatabase.class);
            Transaction transaction = database.beginTransactionAsync(new ITransaction() {
                @Override
                public void execute(DatabaseWrapper databaseWrapper) {
              // todo 处理list保存
              ...
              ...
           }
            }).build();
    transaction.execute();
  • 相关阅读:
    python while循环语句
    Python if条件语句
    推荐一款java的验证码组件——kaptcha
    Linux硬链接和符号链接(转)
    推荐一款好用的java反编译软件——JavaDecompiler
    数据库性能优化之冗余字段的作用
    通过设置代理,解决服务器禁止抓取,报“java.io.IOException: Server returned HTTP response code: 403 for URL”错误的方法
    浏览器在同域名下有并发加载的限制
    XCODE快捷键和功能汇总篇(不断更新)
    队列应用场景,自己实现队列
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/5520840.html
Copyright © 2011-2022 走看看