cardContactModels 为集合数据
CardContactModel 为model
if (cardContactModels.isNotEmpty()) {
val transaction = FastStoreModelTransaction
.saveBuilder<CardContactModel>(FlowManager.getModelAdapter<CardContactModel>(CardContactModel::class.java))
.addAll(cardContactModels)
.build()
transaction.execute(database)
}
DbFlow sql转化特例1
val mSql = "SELECT\n" +
" \tcontactKey,\n" +
" \t' ' AS mgg,\n" +
" \tspellFirstChar,\n" +
" \tsortKey,\n" +
" \tisMark,\n" +
" \tcontactName,\n" +
" \tstartTime,\n" +
" \tendTime,\n" +
" \tphotoName \n" +
" FROM\n" +
" \tcontact A\n" +
" left join cardContact B using(contactKey)\n" +
" left join temporaryContact C using(contactKey)\n" +
" \tWHERE B.imsi = '$cardImsi'\n" +
" \tAND A.isMark = 1 \n" +
" \tAND A.contactKey NOT NULL \n" +
" ORDER BY\n" +
" \tA.sortKey;"
//e("sql:" + mSql)
val markCursor: FlowCursor? = (SQLite.select(
ContactModel_Table.contactKey.withTable(NameAlias.builder("A").build()),//`A`.`contactKey`
caseWhen<String>(ContactModel_Table.simplifiedSpell.withTable(NameAlias.builder("A").build()).eq(" ")).then(" ")
.`else`(" ").end().`as`("mgg"),
ContactModel_Table.spellFirstChar.withTable(NameAlias.builder("A").build()),
ContactModel_Table.sortKey.withTable(NameAlias.builder("A").build()),
ContactModel_Table.contactName.withTable(NameAlias.builder("A").build()),
ContactModel_Table.isMark.withTable(NameAlias.builder("A").build()),
CardContactModel_Table.imsi.withTable(NameAlias.builder("B").build()),
TemporaryContactModel_Table.startTime.withTable(NameAlias.builder("C").build()),
TemporaryContactModel_Table.endTime.withTable(NameAlias.builder("C").build())
) from ContactModel::class).`as`("A")
.join(CardContactModel::class.java, Join.JoinType.LEFT_OUTER).`as`("B")
.using(ContactModel_Table.contactKey)
.join(TemporaryContactModel::class.java, Join.JoinType.LEFT_OUTER).`as`("C")
.using(TemporaryContactModel_Table.contactKey)
.where(CardContactModel_Table.imsi.withTable(NameAlias.builder("B").build()).eq(cardImsi))
.and(ContactModel_Table.contactKey.withTable(NameAlias.builder("A").build()).isNotNull)
.and(ContactModel_Table.isMark.withTable(NameAlias.builder("A").build()).eq(true))
.orderBy(ContactModel_Table.sortKey.withTable(NameAlias.builder("A").build()), true).query()
return /*DbHelper3.getInstance().dbFlowDbManager.getDatabaseWrapper().rawQuery(mSql, null)*/markCursor
DbFlow sql转化特例2
(SQLite.select(
ContactModel_Table.spellFirstChar.withTable(NameAlias.builder("E").build()).distinct()
) from ContactModel::class).`as`("D")
.leftOuterJoin(
(SQLite.select(
ContactModel_Table.contactName.withTable(NameAlias.builder("A").build()),
ContactModel_Table.sortKey.withTable(NameAlias.builder("A").build()),
ContactModel_Table.spellFirstChar.withTable(NameAlias.builder("A").build()),
ContactModel_Table.photoName.withTable(NameAlias.builder("A").build()),
ContactModel_Table.spell.withTable(NameAlias.builder("A").build()),
PhoneModel_Table.contactKey.withTable(NameAlias.builder("B").build()).`as`("contactKey"),
PhoneModel_Table.number.withTable(NameAlias.builder("B").build()).`as`("number"),
CardContactModel_Table.imsi.withTable(NameAlias.builder("C").build())
) from ContactModel::class).`as`("A")
.join(PhoneModel::class.java, Join.JoinType.LEFT_OUTER).`as`("B")
.using(PhoneModel_Table.contactKey)
.join(CardContactModel::class.java, Join.JoinType.LEFT_OUTER).`as`("C")
.using(CardContactModel_Table.contactKey)
.where(CardContactModel_Table.imsi.withTable(NameAlias.builder("C").build()).eq(cardImsi))
.orderBy(ContactModel_Table.contactKey.withTable(NameAlias.builder("A").build()), true)
)
.`as`("E")
.using(ContactModel_Table.contactKey)
.where(PhoneModel_Table.number.isNotNull)
.orderBy(ContactModel_Table.sortKey.withTable(NameAlias.builder("E").build()), true)
.query()
网友评论