Android数据缓存框架内置ORM功能使用教程

 更新时间:2022年09月05日 14:56:42   作者:dora  
这篇文章主要为大家介绍了Android数据缓存框架内置ORM功能使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

使用教程如下

配置初始化

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

在自定义的Application类的入口加入一行配置,database为数据库名,version从1开始每次递增1,tables用来配置需要初始化的表,dcache中所有的表需要实现OrmTable接口。

注解详解

表和列相关

@Table

此注解配置在OrmTable的实现类的类名之上,用来指定一个类映射到表的名称

@Column

此注解配置在OrmTable的实现类的成员属性之上,用来指定一个属性映射到字段的名称

@Ignore

此注解的优先级高于@Column,配置在OrmTable的实现类的成员属性之上,配置了此注解的成员属性,不会作为表的字段进行映射

约束相关

@NotNull

此注解配置在OrmTable的实现类的成员属性之上,用来指定这个字段为非空字段

@PrimaryKey

此注解配置在OrmTable的实现类的成员属性之上,用来指定这个字段为表的主键

@Id

此注解配置在OrmTable的实现类的成员属性之上,作用类似于@PrimaryKey,并

在它的基础上指定了该字段名为”_id“,相当于@PrimaryKey+@Column("_id")

@Unique

此注解配置在OrmTable的实现类的成员属性之上,表示这个字段的值在这张表中从不重复

@Default

此注解配置在OrmTable的实现类的成员属性之上,通过它可以给字段指定默认值

CRUD操作

插入数据

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

insert不仅可以被用来插入单条数据,也可以插入一个List数据

删除数据

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

更新数据

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

查询数据

Condition

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

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

WhereBuilder

where子句的构建类,通过WhereBuilder.create ()创建实例

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

可以通过调用addWhereEqualTo添加key=value条件。

QueryBuilder

支持where、orderBy、limit、groupBy等

查询记录数

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

通过selectCount查询符合查询条件的记录条数。

其他注意事项

复杂数据类型字段映射

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

使用@Convert注解可以保存复杂的数据类型,例如ArrayList,一般将复杂数据类型转成格式化后的字符串类型保存到数据库,读取数据的时候进行自动解码操作。

converter类型转换器可以自行定义,columnType为你保存到数据库的实际数据类型。

表结构升级

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

只需要在配置中将数据库版本提升1,即可自动进行表结构的升级。在OrmTable的实现类重写isUpgradeRecreated()来确定表升级后是否要清空之前保存的数据,如果return true,则在表升级后将数据清空。

事务操作

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

使用Transaction.execute()可以在代码块中执行事务操作,it指代的是OrmDao<Account>。

以上就是Android数据缓存框架内置ORM功能使用教程的详细内容,更多关于Android数据缓存框架ORM的资料请关注脚本之家其它相关文章!

相关文章

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

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

    这篇文章主要为大家详细介绍了Android split分割特殊字符取名称的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 解析libcurl在android下的移植、编译与测试

    解析libcurl在android下的移植、编译与测试

    本篇文章是对libcurl在android下的移植、编译与测试进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android RecyclerView实现吸顶动态效果流程分析

    Android RecyclerView实现吸顶动态效果流程分析

    RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法
    2022-12-12
  • kotlin中的模块化结构组件及工作原理

    kotlin中的模块化结构组件及工作原理

    本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-03-03
  • Android编程自定义Dialog的方法分析

    Android编程自定义Dialog的方法分析

    这篇文章主要介绍了Android编程自定义Dialog的方法,结合实例形式分析了Android自定义Dialog的界面布局、功能实现及相关注意事项,需要的朋友可以参考下
    2017-03-03
  • Android Kotlin 中的groupBy方法详解

    Android Kotlin 中的groupBy方法详解

    在Kotlin中,groupBy函数可以对集合进行分组,形成一个Map,其中key是分组标准,value是对应的元素列表,本文通过实例详细解释groupBy的使用方法和常见应用场景,如按员工年龄分组或产品类型统计数量等,展示了groupBy的灵活性和实用性
    2024-09-09
  • Android开发ThreadPoolExecutor与自定义线程池详解

    Android开发ThreadPoolExecutor与自定义线程池详解

    这篇文章主要为大家介绍了Android开发ThreadPoolExecutor与自定义线程池详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • android Gallery组件实现的iPhone图片滑动效果实例

    android Gallery组件实现的iPhone图片滑动效果实例

    这篇文章主要介绍了android Gallery组件实现的iPhone图片滑动效果实例,即相册内的图片实现可左右滑动的效果,需要的朋友可以参考下
    2014-07-07
  • Android实现水波纹扩散效果的实例代码

    Android实现水波纹扩散效果的实例代码

    这篇文章主要介绍了Android实现水波纹扩散效果的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 利用Android中的TextView实现逐字显示动画

    利用Android中的TextView实现逐字显示动画

    在安卓程序启动的时候,想逐字显示一段话,每个字都有一个从透明到不透明的渐变动画。那如何显示这个效果,下面一起来看看。
    2016-08-08

最新评论