安卓数据库框架——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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据