我想使用 sqflite
package存储我的对象。我读了一些articles , tutorials和 examples关于它。至此我明白了一切。但它们都没有涵盖我的用例:
我有一个名为 Foo
的类。这个类在一些原始字段旁边包含一个 Bar
类的对象。 Bar
只有原始字段。此外,Foo
有一个 Baz
类型的对象列表。 Baz
也只有原始字段。
class Foo {
// simple fields
String id;
Bar bar;
List<Baz> bazs;
}
class Bar {
// only primitive fields
String id;
}
class Baz {
// only primitive fields
String id;
}
我想将 bar
对象与数据库中的 foo
对象以及 bazs
对象连接起来。我该怎么做?什么是最好的方法?
我对 SQL 不是很熟悉。我知道 SELECT、WHERE、ORDERBY 等的含义,但我的知识还不够深入。
我找到了 this qustion在 Stack Overflow 中,但我想知道将所有值存储为 JSON 是否真的有效。如果 JSON 变得非常大会怎样?
目前我唯一的想法是将bar
对象的id
作为一个字段存储在foo
对象中,反之亦然。 foo
还可以包含 bazs
对象的 id
列表。或者每个 baz
对象都包含 foo
对象的 id
。这是一个好的解决方案吗?
是否有可能让 sqflite
处理对象之间的关系?
最佳答案
您需要创建 3 个表:
- 福斯: [字段]:
id
- 酒吧: [字段]:
foo_id
:指向Foo
的bar_id
: 酒吧的id
id
字段的外键
- 巴斯: [字段]:
foo_id
:指向Foo
的baz_id
:baz的id
id
字段的外键
现在假设您想要获取一条 Foo
记录,Id = 3 以及 bar
和 bazs
- 获取 foo 记录:
SELECT * FROM foo WHERE id = 3;
- 在
foo_id = 3
处获取柱线
SELECT bar_id
FROM bars
INNER JOIN Foo on B.id = bars.foo_id;
- 获取 bazs,其中
foo_id = 3
SELECT baz_id
FROM bazs
INNER JOIN Foo on B.id = bazs.foo_id;
如果你使用moor
包来实现sqllite DB会更容易
关于sqlite - 如何在 sqflite 中存储对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63318065/