DbFlow

2021-05-05  本文已影响0人  CentForever

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()
上一篇 下一篇

猜你喜欢

热点阅读