安卓数据库框架——Realm进阶学习

2024-06-09 16:32

本文主要是介绍安卓数据库框架——Realm进阶学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


安卓数据库框架——Realm进阶学习

参考:

https://realm.io/cn/docs/java/latest/#realms

http://ngudream.com/2016/08/13/realm-builder/

 

Real的配置

基础配置

一般我们不配置migration和modules。

存储

Realm一般是建立一个数据库,如果仅仅希望存到内存,也是可以用的:


在realm完全关闭的时候会被释放。

Realm线程及监听

Realm可以实现不同线程中读取和写入 Realm 对象,即线程安全。同时,在Realm中的数据改变时,可以进行监听:

Realm监听:

在 Realm 数据改变的时候会被触发。


集合监听:       

当集合中的某对象的属性改变时被触发,当然这个属性的改变需能保证该元素仍然满足查询条件从而使其仍然存在于集合当中。



对象监听:

为某个 Realm 对象注册监听器以获得针对对象属性修改的细粒度通知:

 

Json转换

可以直接将json对象转换成Realm对象并存储:


databaseHelper的封装:


public class GoodsDBHelper {
   
private static volatile GoodsDBHelper mInstance;
    private final
RealmConfiguration mDefaultConfig;
    private
ArrayList<RealmConfiguration> mConfigsList = new ArrayList<>();
    private
GoodsDBHelper(){
       
super();
        
mDefaultConfig = new RealmConfiguration.Builder()
                .
name("PDA_Goods.realm") //文件名
               
.schemaVersion(0) //版本号
               
.build();
   
}

   
public static GoodsDBHelper getInstance(){
       
if(mInstance == null){
           
synchronized (GoodsDBHelper.class){
               
if(mInstance == null){
                   
mInstance = new GoodsDBHelper();
               
}
            }
        }
       
return mInstance;
   
}

   
private Realm createRealm() {
       
return createRealmByConfig(mDefaultConfig);
   
}

   
private Realm createRealmByConfig(RealmConfiguration config){
       
mConfigsList.add(config);
        return
Realm.getInstance(config);
   
}

   
/**
     *
添加物资基本信息
     * @param
info
    
*/
   
public void insertGoodsInfo(GoodsInfo info){
       
Realm realm = createRealm();
       
realm.beginTransaction();
       
realm.copyToRealmOrUpdate(info);
       
realm.commitTransaction();
       
realm.close();
   
}

   
/**
     *
查询指定物资
     * @param
goodsID
     
* @return
    
*/
   
@Nullable
   
public GoodsInfo queryGoodsInfo(String goodsID){
       
Realm realm = createRealm();
       
GoodsInfo info = realm.where(GoodsInfo.class).equalTo("userId", goodsID).findFirst();
       
GoodsInfo result = null;
        if
(info != null) {
           
result = realm.copyFromRealm(info);
       
}
       
realm.close();
        return
result;
   
}

   
/**
     *
查询全部用户
     * @return
    
*/
   
public List<GoodsInfo> queryGoodsInfos(){
       
Realm realm = createRealm();
       
RealmResults<GoodsInfo> realmResults = realm.where(GoodsInfo.class).findAll();
       
List<GoodsInfo> arrayList = realm.copyFromRealm(realmResults);
       
realm.close();
        return
arrayList;
   
}

   
/**
     *
删除指定用户
     * @param
userId
    
*/
   
public void deleteGoodsInfo(String userId){
       
Realm realm = createRealm();
       
GoodsInfo info = realm.where(GoodsInfo.class).equalTo("userId", userId).findFirst();
        if
(info != null) {
           
realm.beginTransaction();
           
info.deleteFromRealm();
           
realm.commitTransaction();
       
}
       
realm.close();
   
}

   
/**
     *
删除全部用户信息
     */
   
public void deleteAllGoodsInfo(){
       
Realm realm = createRealm();
       
realm.beginTransaction();
       
realm.delete(GoodsInfo.class);
       
realm.commitTransaction();
       
realm.close();
   
}

}

 

 

 

这篇关于安卓数据库框架——Realm进阶学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045707

相关文章

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(