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

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

 更新時(shí)間: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ù)庫(kù)名,version從1開始每次遞增1,tables用來(lái)配置需要初始化的表,dcache中所有的表需要實(shí)現(xiàn)OrmTable接口。

注解詳解

表和列相關(guān)

@Table

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

@Column

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

@Ignore

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

約束相關(guān)

@NotNull

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

@PrimaryKey

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

@Id

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

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

@Unique

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

@Default

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

CRUD操作

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

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

insert不僅可以被用來(lái)插入單條數(shù)據(jù),也可以插入一個(gè)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("這個(gè)是key",
                    "D"+generateAccKey(), "P"+generateAccKey()))

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

Condition

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

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

WhereBuilder

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

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

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

QueryBuilder

支持where、orderBy、limit、groupBy等

查詢記錄數(shù)

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

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

其他注意事項(xiàng)

復(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ù)庫(kù),讀取數(shù)據(jù)的時(shí)候進(jìn)行自動(dòng)解碼操作。

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

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

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

只需要在配置中將數(shù)據(jù)庫(kù)版本提升1,即可自動(dòng)進(jìn)行表結(jié)構(gòu)的升級(jí)。在OrmTable的實(shí)現(xiàn)類重寫isUpgradeRecreated()來(lái)確定表升級(jí)后是否要清空之前保存的數(shù)據(jù),如果return true,則在表升級(jí)后將數(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的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    解析libcurl在android下的移植、編譯與測(cè)試

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

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

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

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

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

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

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

    Android?Kotlin?中的groupBy方法詳解

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

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

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

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

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

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

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

    利用Android中的TextView實(shí)現(xiàn)逐字顯示動(dòng)畫

    在安卓程序啟動(dòng)的時(shí)候,想逐字顯示一段話,每個(gè)字都有一個(gè)從透明到不透明的漸變動(dòng)畫。那如何顯示這個(gè)效果,下面一起來(lái)看看。
    2016-08-08

最新評(píng)論

顺昌县| 五华县| 新蔡县| 梓潼县| 遂平县| 疏勒县| 宿松县| 日土县| 碌曲县| 米泉市| 杂多县| 台州市| 芦溪县| 珲春市| 西充县| 犍为县| 攀枝花市| 册亨县| 拉萨市| 疏勒县| 民和| 铜山县| 兴城市| 收藏| 昆山市| 天峻县| 彭州市| 晋城| 勐海县| 唐河县| 连云港市| 家居| 郑州市| 孙吴县| 靖州| 安龙县| 鄂托克前旗| 扎鲁特旗| 金阳县| 庆安县| 成武县|