属性和条件
优质
小牛编辑
136浏览
2023-12-01
是一个代表SQL语句中的条件语句的接口。这是一个接口,这样其他类型的条件可以使用,并且允许最大的灵活性,以满足您的需求。
例如,写在原始的SQLite:
建议我们的查询从Model
的属性
中创造条件
。
@Table(database = TestDatabase.class)
public class TestModel3 {
@PrimaryKey
String name;
@Column
String type;
}
有了这个定义, DBFlow将帮我们生产一个TestModel3_Table类:
从生成的类文件中使用的字段,我们现在可以在我们的查询中使用属性
生成SQLCondition
:
TestModel3_Table.name.withTable().is("Test"); // `TestModel3`.`name` = 'Test'
TestModel3_Table.name.like("%Test%");
TestModel3_Table.name.eq(AnotherTable_Table.name);
A whole set of SQLCondition
operations are supported for Property
generated for a Table including:
is()
,eq()
-> =isNot()
,notEq()
-> !=isNull()
-> IS NULL /isNotNull()
IS NOT NULLlike()
,glob()
greaterThan()
,greaterThanOrEqual()
,lessThan()
,lessThanOrEqual()
between()
-> BETWEENin()
,notIn()
条件组
该ConditionGroup
是的继任者。这是有缺陷的,就是它符合的QueryBuilder
,还包含 Condition
,以及所需要的类型的参数都需要属于它自己的表。
ConditionGroup
是任意集合 SQLCondition
,可以组合成一个单一的条件,SELECT projection,或者被用作SQLCondition
在另一个ConditionGroup
内。
这用于包装查询语句,支持其他各种查询和类。
SQLite.select()
.from(MyTable.class)
.where(MyTable_Table.someColumn.is("SomeValue"))
.and(MyTable_Table.anotherColumn.is("ThisValue"));
// SELECT * FROM `MyTable` WHERE `someColumn`='OneValue' OR (`someColumn`='SomeValue' AND `anotherColumn`='ThisValue')
SQLite.select()
.from(MyTable.class)
.where(MyTable.someColumn.is("OneValue"))
.or(ConditionGroup.clause()
.and(MyTable_Table.someColumn.is("SomeValue")
.AND(MyTable_Table.anotherColumn.is("ThisValue"));