欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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用來配置需要初始化的表,dcache中所有的表需要實(shí)現(xiàn)OrmTable接口。

注解詳解

表和列相關(guān)

@Table

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

@Column

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

@Ignore

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

約束相關(guān)

@NotNull

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

@PrimaryKey

此注解配置在OrmTable的實(shí)現(xiàn)類的成員屬性之上,用來指定這個(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)類的成員屬性之上,通過它可以給字段指定默認(rèn)值

CRUD操作

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

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

insert不僅可以被用來插入單條數(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)建類,通過WhereBuilder.create ()創(chuàng)建實(shí)例

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ù)。

其他注意事項(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()來確定表升級(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)文章

最新評(píng)論