DbFlow

作者: CentForever | 来源:发表于2021-05-05 22:29 被阅读0次

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()

相关文章

  • DBFlow基础篇

    为什么使用DBFlow DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sp...

  • Android数据库框架DBFlow的使用

    DBFlow Android最好用的数据库框架——DBFLOW全面解析 DBFlow 是一个基于注解处理器开发的使...

  • DbFlow

    cardContactModels 为集合数据 DbFlow sql转化特例1 DbFlow sql转化特例2

  • DbFlow

    DbFlow的使用 配置 在自己的Application中配置 数据库的创建 版本号和名称 表的创建,至少有一个主...

  • DBFlow使用

    DBFlow优点介绍 DBFlow的设计吸取了其他很多ORM框架中好的特征,并将之做得更好。它很灵活,让你能更专注...

  • 1.Dbfow使用的坑

    报错: Caused by: com.raizlabs.android.dbflow.structure.Inva...

  • DbFlow sqlcipher 加密存储

    前言 在学习Dbflow的使用过程中,发现官方文档没有对其加密的方式进行说明,遂进行了总结DbFlow可以通过加入...

  • DBFlow—目前最好用的安卓数据库,DBFlow使用详解

    声明:本文章独家由公众号终端研发部原创发文 数据库DBFlow应用场景及其分析 先上一张效果图 dbflow定义 ...

  • DBFlow使用

    PS: 都说DBFlow使用,话说,真的有人在实际开发中使用这个数据库框架么? 问题一: 如何修改数据表中字段的类...

  • Android数据库神器(bdflow)

    今日观看别人源码的时候偶然间发现了一个很好用的数据库神器,在这里分享一下。 什么是dbflow? dbflow是A...

网友评论

      本文标题:DbFlow

      本文链接:https://www.haomeiwen.com/subject/vkzgnktx.html