Realm数据库存储历史数据。保存3条数据。如何实现。

1.先上主要代码。数据库存储的操作

            //TODO  把查看的详情往数据库存一下是为了。搜索推荐的时候列出来
            final CustomTuiJianSearch bean = new CustomTuiJianSearch();
            bean.setId(baseInfoMapBean.getId() + "");
            bean.setCompanyName(baseInfoMapBean.getKhmc());
            bean.setIsValid(baseInfoMapBean.getIsvalid());
            bean.setInsertTime(System.currentTimeMillis());
       
 Realm realm = Realm.getInstance(MApplication.getInstance().config);
            //先查询数据,先判断有没有重复的不做操作。如果没有重复的,并且有3条了。就把旧的移除。新的加入
            final RealmResults equalResults = realm.where(CustomTuiJianSearch.class).equalTo("id", baseInfoMapBean.getId() + "")
                    .findAll();
            if (equalResults.size() == 0) {//代表没有重复的。
                 RealmResults historyList = realm.where(CustomTuiJianSearch.class)
                        .findAll();
                //如果大于等于3条了。就把第一条数据删除。再添加
                if (historyList.size() >= 3) {
                    historyList = historyList.sort("insertTime", Sort.ASCENDING);
                    final RealmResults finalHistoryList = historyList;
                    realm.executeTransaction(new Realm.Transaction() {
                        @Override
                        public void execute(Realm realm) {
                            finalHistoryList.deleteFirstFromRealm();
//                            realm.copyToRealmOrUpdate(bean);
                        }
                    });
                }
                //添加一条
                realm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealmOrUpdate(bean);

                    }
                });
            }else{
                //有重复的。那就更新数据。时间会变

                realm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        /**
                         * 当Model中存在主键的时候,推荐使用copyToRealmOrUpdate方法插入数据。因为id是主键,所以更新数据
                         * 如果对象存在,就更新该对象;反之,它会创建一个新的对象。
                         */
                        realm.copyToRealmOrUpdate(bean);
                    }
                });
            }

2.上CustomTuiJianSearch模型类。里面有主键。所以上面代码插入的时候用 realm.copyToRealmOrUpdate(bean)

public class CustomTuiJianSearch extends RealmObject {
    @PrimaryKey
    private String id;//每个企业有个唯一的id。查询企业详情需要用到
    private String companyName;//企业名称
    private String isValid;//是否有效  1有效   其它注销
    private long insertTime;//插入的时间。根据时间来删除


    public long getInsertTime() {
        return insertTime;
    }

    public void setInsertTime(long inserTime) {
        this.insertTime = inserTime;
    }

    public String getId() {
        return id;
    }

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

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getIsValid() {
        return isValid;
    }

    public void setIsValid(String isValid) {
        this.isValid = isValid;
    }
}

3.realm得到这个对象。这个对象是在application里面声明的。

Realm realm = Realm.getInstance(MApplication.getInstance().config);
    public RealmConfiguration config;   
       public voic onCreate(){
//配置Realm  数据库
        Realm.init(this);

        config = new RealmConfiguration.Builder()
                .name("yi.realm")//数据库名  数据库结构改了,如果不会迁移记得改数据库名
                .schemaVersion(13)//版本号
                .build();

        Realm.setDefaultConfiguration(config);
}

 

你可能感兴趣的:(android,studio,Realm,数据库存储历史记录)