目录
当前位置: 首页 > 文档资料 > DBFlow 中文文档 >

属性和条件

优质
小牛编辑
136浏览
2023-12-01

是一个代表SQL语句中的条件语句的接口。这是一个接口,这样其他类型的条件可以使用,并且允许最大的灵活性,以满足您的需求。

例如,写在原始的SQLite:

建议我们的查询从Model属性中创造条件

  1. @Table(database = TestDatabase.class)
  2. public class TestModel3 {
  3. @PrimaryKey
  4. String name;
  5. @Column
  6. String type;
  7. }

有了这个定义, DBFlow将帮我们生产一个TestModel3_Table类:

从生成的类文件中使用的字段,我们现在可以在我们的查询中使用属性生成SQLCondition

  1. TestModel3_Table.name.withTable().is("Test"); // `TestModel3`.`name` = 'Test'
  2. TestModel3_Table.name.like("%Test%");
  3. TestModel3_Table.name.eq(AnotherTable_Table.name);

A whole set of SQLCondition operations are supported for Property generated for a Table including:

  1. is(), eq() -> =
  2. isNot(), notEq() -> !=
  3. isNull() -> IS NULL / isNotNull()IS NOT NULL
  4. like(), glob()
  5. greaterThan(), greaterThanOrEqual(), lessThan(), lessThanOrEqual()
  6. between() -> BETWEEN
  7. in(), notIn()

条件组

ConditionGroup是的继任者。这是有缺陷的,就是它符合的QueryBuilder,还包含 Condition,以及所需要的类型的参数都需要属于它自己的表。

ConditionGroup是任意集合 SQLCondition,可以组合成一个单一的条件,SELECT projection,或者被用作SQLCondition在另一个ConditionGroup内。

这用于包装查询语句,支持其他各种查询和类。

  1. SQLite.select()
  2. .from(MyTable.class)
  3. .where(MyTable_Table.someColumn.is("SomeValue"))
  4. .and(MyTable_Table.anotherColumn.is("ThisValue"));
  5. // SELECT * FROM `MyTable` WHERE `someColumn`='OneValue' OR (`someColumn`='SomeValue' AND `anotherColumn`='ThisValue')
  6. SQLite.select()
  7. .from(MyTable.class)
  8. .where(MyTable.someColumn.is("OneValue"))
  9. .or(ConditionGroup.clause()
  10. .and(MyTable_Table.someColumn.is("SomeValue")
  11. .AND(MyTable_Table.anotherColumn.is("ThisValue"));