Android开发--Realm框架

Realm简介

      Realm 是一个移动数据库,可运行于手机、平板和可穿戴设备之上。可以让你的应用更快速,带来难以想象的体验。其目标是为了代替 CoreData 和 SQLite 数据库。 
      Realm非常易用,不是在SQLite基础上的ORM,它有自己的数据查询引擎。是完全重新开发的数据库,速度非常快,并且支持跨平台,数据加密,数据迁移,支持json,流式api等 。

Realm使用步骤:

1、第一步:在项目的 build.gradle 文件中添加如下 class path 依赖。

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:3.1.1"
}

2、第二步:在 app 的 build.gradle 文件中应用 realm-android 插件。

apply plugin: 'realm-android'

3、第三步:在Application初始化

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        Realm.init(this);
        RealmConfiguration configuration = new RealmConfiguration.Builder().name("test.realm").build();
        Realm.setDefaultConfiguration(configuration);
        super.onCreate();
    }
}

4、创建Do类

   User类:

public class User extends RealmObject {
    @PrimaryKey
    private String id;
    private int age;
    @Required
    private String name;
    private RealmList<Dog> dogRealmList;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public RealmList<Dog> getDogRealmList() {
        return dogRealmList;
    }

    public void setDogRealmList(RealmList<Dog> dogRealmList) {
        this.dogRealmList = dogRealmList;
    }
}

Dog类:

public class Dog extends RealmObject{
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

5、初始化Realm

private Realm realm;
realm  = Realm.getDefaultInstance();

6、增数据

//增数据
public void insertRealm(View view) {
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            //创建对象,由于有主键需要加上参数,因为realm不能自增,所有使用uuid代替
            User user = realm.createObject(User.class, UUID.randomUUID().toString());
            user.setAge(18);
            user.setName("谁谁谁");
            RealmList<Dog> dogs = new RealmList<>();
            for(int i=0;i<3;i++){
                Dog dog = realm.createObject(Dog.class);
                dog.setAge(5);
                dog.setName("小白"+i);
                dogs.add(dog);
            }
            user.setDogRealmList(dogs);
            //由于有主键使用copyToRealmOrUpdate
            realm.copyToRealmOrUpdate(user);
        }
    });
}

7、删数据

//删数据
public void deleteRealm(View view) {
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            //先查询再删除
            RealmResults<User> result= realm.where(User.class).findAll();
            result.get(4).deleteFromRealm();//删除指定位置(第4条记录)的记录
            result.deleteFromRealm(4);//删除指定位置(第4条记录)的记录
            result.deleteFirstFromRealm(); //删除user表的第一条数据
            result.deleteLastFromRealm();//删除user表的最后一条数据
            result.deleteAllFromRealm();//删除user表的全部数据
        }
    });
}

8、改数据

//改数据
public void updateRealm(View view) {
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            //先查询后更改
            RealmResults<Dog> result = realm.where(Dog.class).equalTo("name","hh").findAll();
            for(Dog dog : result){
                dog.setAge(20);
            }
        }
    });
}

9、查数据

//查数据
public void queryRealm(View view) {
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            RealmResults<User> users = realm.where(User.class).findAllSorted("id", Sort.DESCENDING);//按照id倒序排序
            long size = users.size();//返回数据的条数
            double average = users.average("age");//返回查询结果的中age的平均值
            long sum = users.sum("age").longValue();//返回查询结果中age的总数
            long min = users.min("age").longValue();//返回查询结果中age的最小值
            long max = users.max("age").longValue();//返回查询结果中age的最大值
            System.out.println(size);
            System.out.println(average);
            System.out.println(sum);
            System.out.println(min);
            System.out.println(max);
        }
    });
}
发布了20 篇原创文章 · 获赞 1 · 访问量 2816

猜你喜欢

转载自blog.csdn.net/baidu_27603429/article/details/89636807