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();
时间: 2024-11-19 14:28:37

dbflow 批量 增删查改的相关文章

MERGE批量增删查改数据

MERGE优点: 在批量处理数据的时候,我可以用到merge一次完成数据处理. 示例代码一: MERGE INTO student AS t using (SELECT '丽水' AS NAME,20 AS age UNION ALL SELECT '王五' AS NAME ,21 AS age) s ON t.Age=s.age WHEN MATCHED THEN UPDATE SET t.Name=s.NAME WHEN NOT MATCHED THEN INSERT VALUES(s.NA

MongoDB入门学习(三):MongoDB的增删查改

对于我们这种菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 因为MongoDB存储数据都是以文档的模式,所以在操作它的数据时,也是以文档为单位的.那么我们实现增删查改也是以文档为基础,不知道文档是什么的同学可以看看上篇介绍的基本概念. 1.插入文档 向MongoDB集合中插入文档的基本方法是insert: 单个插入 > document = {key : value} > db.collecti

Java数据库编程之JDBC增删查改

前言 众多的ORM框架使我们从原生的JDBC编码摆脱出来,但在学习数据库编程之初,应该先掌握底层的JDBC编程,熟练应用后,学起框架才会更得心应手.就像金庸笔下的武侠人物,只要内功深厚,再去学习其他武功绝学,只不过是招式罢了.正所谓,温故而知新,本文回顾了最基础的JDBC增删查改操作. 连接数据库 在之前一篇随笔讲过如何连接数据库——<Java数据库编程之JDBC配置>. 数据库连接工具类 DBConnection package database; import java.sql.*; im

8天学通MongoDB——第二天 细说增删查改

看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享. 一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我

ESql标签(对数据库进行增删查改及命令操作)

功能:WebEasy的核心功能之一,作为平台持久层的接口,用于对数据库的所有操作 ·        对数据库进行增删查改及命令操作 查询时会返回一个书包(Bag) 别名为EasySql 用法:<esql module=模块名 [id=书包名] [act=edit|exe|batch|refresh] [p] [commit=true|false|end]>SQL语句</esql> module:连接数据库的模块名,必选项,在WebEasy系统目录下(如D:/webeasy),可以建

Mongodb学习总结-2(细说增删查改)

看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享. 一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我

ADO.NET教程(2)实现增删查改

声明一个类,在类中实现增删查改的方法 public class AdoNet { //声明连接字符串 public string Sqlstr = "data source={0};database={1};User id={2};pwd={3}"; //声明ado类 public SqlCommand Command; public SqlConnection Conn; //声明构造函数 传入连接字符串进行拼接 public AdoNet(string datasource,str

php mysql增删查改

php mysql增删查改代码段 $conn=mysql_connect('localhost','root','root');  //连接数据库代码 mysql_query("set names utf8");  //传输编码 mysql_query('sql'$conn); //查找名为sql的数据库 admin为表名: 查找数据代码段: $sql="select * from admin ";  //查询表: $sql="select  * from

c++中的顺序表写法,主要实现(增删查改,构造函数,运算符重载)

本文的内容主要是,利用c++写出顺序表,并对写出的代码进行测试, 主要实现的功能:实现对顺序表的增删查改, 要写的函数:构造函数,赋值运算符重载,析构函数.在编写代码过程中应注意到深浅拷贝问题. 下面是顺序表的类函数: #pragma once #include<iostream> using namespace std; typedef int DataType; class SeqList { public: SeqList(); SeqList(DataType *array, size