属性,条件和条件组

    SQLCondition是一个代表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.like("%Test%");
    2. // `name`=`AnotherTable`.`name`
    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(),

    条件组

    ConditionGroupConditionQueryBuilder的继任者。这是有缺陷的,就是它符合的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")