最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android數(shù)據(jù)緩存框架內(nèi)置ORM功能使用教程

 更新時間:2022年09月05日 14:56:42   作者:dora  
這篇文章主要為大家介紹了Android數(shù)據(jù)緩存框架內(nèi)置ORM功能使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

使用教程如下

配置初始化

Orm.init(this, OrmConfig.Builder()
                .database("dcache_sample")
                .tables(Account::class.java)
                .version(1)
                .build())

在自定義的Application類的入口加入一行配置,database為數(shù)據(jù)庫名,version從1開始每次遞增1,tables用來配置需要初始化的表,dcache中所有的表需要實現(xiàn)OrmTable接口。

注解詳解

表和列相關(guān)

@Table

此注解配置在OrmTable的實現(xiàn)類的類名之上,用來指定一個類映射到表的名稱

@Column

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,用來指定一個屬性映射到字段的名稱

@Ignore

此注解的優(yōu)先級高于@Column,配置在OrmTable的實現(xiàn)類的成員屬性之上,配置了此注解的成員屬性,不會作為表的字段進(jìn)行映射

約束相關(guān)

@NotNull

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,用來指定這個字段為非空字段

@PrimaryKey

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,用來指定這個字段為表的主鍵

@Id

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,作用類似于@PrimaryKey,并

在它的基礎(chǔ)上指定了該字段名為”_id“,相當(dāng)于@PrimaryKey+@Column("_id")

@Unique

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,表示這個字段的值在這張表中從不重復(fù)

@Default

此注解配置在OrmTable的實現(xiàn)類的成員屬性之上,通過它可以給字段指定默認(rèn)值

CRUD操作

插入數(shù)據(jù)

DaoFactory.getDao(Account::class.java).insert(Account(generateAccKey(),
                    "D"+generateAccKey(), "P"+generateAccKey()))

insert不僅可以被用來插入單條數(shù)據(jù),也可以插入一個List數(shù)據(jù)

刪除數(shù)據(jù)

val selectOne = DaoFactory.getDao(Account::class.java)
                    .selectOne(QueryBuilder.create().orderBy(OrmTable.INDEX_ID))
            if (selectOne != null) {
                DaoFactory.getDao(Account::class.java).delete(selectOne)
            }

更新數(shù)據(jù)

DaoFactory.getDao(Account::class.java).update(Account("這個是key",
                    "D"+generateAccKey(), "P"+generateAccKey()))

查詢數(shù)據(jù)

Condition

selection:where子句,不帶where,可以帶”?“占位符

selectionArgs:”?“占位符的所有值

WhereBuilder

where子句的構(gòu)建類,通過WhereBuilder.create ()創(chuàng)建實例

public WhereBuilder addWhereEqualTo(String column, Object value) {
        return append(null, column + EQUAL_HOLDER, value);
    }

可以通過調(diào)用addWhereEqualTo添加key=value條件。

QueryBuilder

支持where、orderBy、limit、groupBy等

查詢記錄數(shù)

val count = DaoFactory.getDao(Account::class.java).selectCount()

通過selectCount查詢符合查詢條件的記錄條數(shù)。

其他注意事項

復(fù)雜數(shù)據(jù)類型字段映射

@Convert(converter = StringListConverter.class, columnType = String.class)
@Column("acc_child_values")
private List<String> accChildValues;

使用@Convert注解可以保存復(fù)雜的數(shù)據(jù)類型,例如ArrayList,一般將復(fù)雜數(shù)據(jù)類型轉(zhuǎn)成格式化后的字符串類型保存到數(shù)據(jù)庫,讀取數(shù)據(jù)的時候進(jìn)行自動解碼操作。

converter類型轉(zhuǎn)換器可以自行定義,columnType為你保存到數(shù)據(jù)庫的實際數(shù)據(jù)類型。

表結(jié)構(gòu)升級

  @Override
  public boolean isUpgradeRecreated() {
      return false;
  }

只需要在配置中將數(shù)據(jù)庫版本提升1,即可自動進(jìn)行表結(jié)構(gòu)的升級。在OrmTable的實現(xiàn)類重寫isUpgradeRecreated()來確定表升級后是否要清空之前保存的數(shù)據(jù),如果return true,則在表升級后將數(shù)據(jù)清空。

事務(wù)操作

Transaction.execute(Account::class.java) {
                val selectOne = 			it.selectOne(QueryBuilder.create().orderBy(OrmTable.INDEX_ID))
                if (selectOne != null) {
                    it.delete(selectOne)
                }
            }

使用Transaction.execute()可以在代碼塊中執(zhí)行事務(wù)操作,it指代的是OrmDao<Account>。

以上就是Android數(shù)據(jù)緩存框架內(nèi)置ORM功能使用教程的詳細(xì)內(nèi)容,更多關(guān)于Android數(shù)據(jù)緩存框架ORM的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android split分割特殊字符取名稱的方法

    Android split分割特殊字符取名稱的方法

    這篇文章主要為大家詳細(xì)介紹了Android split分割特殊字符取名稱的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解析libcurl在android下的移植、編譯與測試

    解析libcurl在android下的移植、編譯與測試

    本篇文章是對libcurl在android下的移植、編譯與測試進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android RecyclerView實現(xiàn)吸頂動態(tài)效果流程分析

    Android RecyclerView實現(xiàn)吸頂動態(tài)效果流程分析

    RecyclerView是Android一個更強大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現(xiàn)數(shù)據(jù)縱向滾動,也可以實現(xiàn)橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法
    2022-12-12
  • kotlin中的模塊化結(jié)構(gòu)組件及工作原理

    kotlin中的模塊化結(jié)構(gòu)組件及工作原理

    本文介紹了Kotlin中模塊化結(jié)構(gòu)組件,包括ViewModel、LiveData、Room和Navigation的工作原理和基礎(chǔ)使用,本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-03-03
  • Android編程自定義Dialog的方法分析

    Android編程自定義Dialog的方法分析

    這篇文章主要介紹了Android編程自定義Dialog的方法,結(jié)合實例形式分析了Android自定義Dialog的界面布局、功能實現(xiàn)及相關(guān)注意事項,需要的朋友可以參考下
    2017-03-03
  • Android?Kotlin?中的groupBy方法詳解

    Android?Kotlin?中的groupBy方法詳解

    在Kotlin中,groupBy函數(shù)可以對集合進(jìn)行分組,形成一個Map,其中key是分組標(biāo)準(zhǔn),value是對應(yīng)的元素列表,本文通過實例詳細(xì)解釋groupBy的使用方法和常見應(yīng)用場景,如按員工年齡分組或產(chǎn)品類型統(tǒng)計數(shù)量等,展示了groupBy的靈活性和實用性
    2024-09-09
  • Android開發(fā)ThreadPoolExecutor與自定義線程池詳解

    Android開發(fā)ThreadPoolExecutor與自定義線程池詳解

    這篇文章主要為大家介紹了Android開發(fā)ThreadPoolExecutor與自定義線程池詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • android Gallery組件實現(xiàn)的iPhone圖片滑動效果實例

    android Gallery組件實現(xiàn)的iPhone圖片滑動效果實例

    這篇文章主要介紹了android Gallery組件實現(xiàn)的iPhone圖片滑動效果實例,即相冊內(nèi)的圖片實現(xiàn)可左右滑動的效果,需要的朋友可以參考下
    2014-07-07
  • Android實現(xiàn)水波紋擴(kuò)散效果的實例代碼

    Android實現(xiàn)水波紋擴(kuò)散效果的實例代碼

    這篇文章主要介紹了Android實現(xiàn)水波紋擴(kuò)散效果的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 利用Android中的TextView實現(xiàn)逐字顯示動畫

    利用Android中的TextView實現(xiàn)逐字顯示動畫

    在安卓程序啟動的時候,想逐字顯示一段話,每個字都有一個從透明到不透明的漸變動畫。那如何顯示這個效果,下面一起來看看。
    2016-08-08

最新評論

施甸县| 宜良县| 集安市| 建德市| 云南省| 陇川县| 永城市| 华池县| 崇明县| 吴桥县| 仁怀市| 色达县| 桂平市| 施甸县| 上思县| 辰溪县| 都安| 昌黎县| 灵山县| 澳门| 敦煌市| 洛南县| 平定县| 隆尧县| 财经| 田东县| 正镶白旗| 晋州市| 汝城县| 柏乡县| 玛多县| 平顶山市| 澄城县| 涪陵区| 乌鲁木齐县| 当雄县| 启东市| 扶沟县| 文昌市| 出国| 曲靖市|