Realm数据库使用教程(二):增加数据

标签: 数据库  Realm

Realm数据库使用教程(一):Realm配置和Stetho配置

这里写图片描述

Realm配置已经完成那么就应该增删改查等操作,如上图功能,在这里考虑循序渐进,就从“增加->查->改->删->数据迁移->问题”的功能进程介绍

增加数据

同步操作

  • 同步操作:使用executeTransaction方法插入数据
 mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student = realm.createObject(Student.class);
                        student.setName("使用executeTransaction方法插入数据");
                        student.setNum(new Random().nextInt(20));
                    }
                });

这里写图片描述

  • 同步操作:使用copyToRealmOrUpdate方法插入数据
 /**
                 * 当Model中存在主键的时候,推荐使用copyToRealmOrUpdate方法插入数据。
                 * 如果对象存在,就更新该对象;反之,它会创建一个新的对象。
                 */
                final User user = new User();
                user.setId(2);
                user.setName("使用copyToRealmOrUpdate方法插入数据");
                user.setAge(new Random().nextInt(20));
                user.setSex("同步");
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealmOrUpdate(user);
                    }
                });

这里写图片描述

  • 同步操作:使用copyToRealm方法插入数据
 /**
                 *若该Model没有主键,使用copyToRealm方法,否则将抛出异常。
                 */
                final Student student = new Student();
                student.setName("使用copyToRealm方法插入数据");
                student.setNum(new Random().nextInt(20));
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealm(student);
                    }
                });

这里写图片描述

  • 同步操作:增加一对一表,Person包含Men(以executeTransaction为例)
Person类与Men 类,文章最下方有提供!

//以executeTransaction为例
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Person person = realm.createObject(Person.class);
                        person.setCity("杭州");
                        person.setProject("android");

                        Men men = realm.createObject(Men.class);
                        men.setName("huangxiaoguo");
                        men.setAge(25);

                        person.setMen(men);

                    }
                });

这里写图片描述
这里写图片描述

  • 同步操作:增加一对一表,Person包含一个Men(以copyToRealm为例)
 final Person person1 = new Person();
                person1.setCity("杭州");
                person1.setProject("android");
                Men men1 = new Men();
                men1.setName("huangxiaoguo");
                men1.setAge(new Random().nextInt(100));
                person1.setMen(men1);
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        //如果使用copyToRealmOrUpdate,Person需要主键
                        realm.copyToRealm(person1);
                    }
                });

这里写图片描述
这里写图片描述

  • 同步操作:增加一对多表,Person包含多个Men(以executeTransaction为例)
MorePerson类在文章最下方提供

mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        MorePerson morePerson = realm.createObject(MorePerson.class);
                        morePerson.setCity("杭州");
                        morePerson.setProject("开发工程师");
                        morePerson.setTime(simpleDateFormat.format(new Date()));
                        for (int i = 0; i < 3; i++) {
                            Men men = realm.createObject(Men.class);
                            men.setName("huangxiaoguo" + i);
                            men.setAge(new Random().nextInt(100));
                            morePerson.getMens().add(men);
                        }


                    }
                });

注意:在Realm中不能使用android原有的list集合,需要Realm特定的RealmList集合!

这里写图片描述
这里写图片描述

  • 同步操作:增加一对多表,Person包含多个Men(以copyToRealm为例)
 final MorePerson morePerson1 = new MorePerson();
                morePerson1.setCity("杭州");
                morePerson1.setProject("开发工程师");
                morePerson1.setTime(simpleDateFormat.format(new Date()));
                RealmList<Men> menList = new RealmList<>();
                for (int i = 0; i < 3; i++) {
                    Men men2 = new Men();
                    men2.setName("huangxiaoguo" + i);
                    men2.setAge(new Random().nextInt(100));
                    menList.add(men2);
                }
                morePerson1.setMens(menList);
                for (int i = 0; i < 3; i++) {
                    Men men2 = new Men();
                    men2.setName("huangxiaoguo" + i);
                    men2.setAge(new Random().nextInt(100));
                    morePerson1.getMens().add(men2);
                }
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealm(morePerson1);
                    }
                });

这里写图片描述
这里写图片描述

  • 同步操作:beginTransaction和commitTransaction方法插入数据(不建议使用)
  //注意:在UI和后台线程同时开启创建write的事务,可能会导致ANR错误。
                // 为了避免该问题,可以使用executeTransactionAsync来实现。
                mRealm.beginTransaction();//开启事务
                Student student1 = mRealm.createObject(Student.class);
                student1.setName("事务方式插入数据");
                student1.setNum(new Random().nextInt(100) + 100);
                mRealm.commitTransaction();

这里写图片描述

异步操作(建议使用)

  • 异步操作:使用executeTransactionAsync直接插入数据
  //该方法会开启一个子线程来执行事务,并且在执行完成后进行结果通知。
                realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student2 = realm.createObject(Student.class);
                        student2.setName("使用executeTransactionAsync直接插入数据");
                        student2.setNum(new Random().nextInt(100) + 200);
                    }
                });

异步操作需要在activity不可见或关闭时取消任务

  @Override
    protected void onDestroy() {
        super.onDestroy();
        if (realmAsyncTask != null && !realmAsyncTask.isCancelled()) {
            realmAsyncTask.cancel();
        }
        if (mRealm != null && !mRealm.isClosed()) {
            mRealm.close();
        }
    }

这里写图片描述

  • 异步操作:使用executeTransactionAsync并且进行监听
 //注意:如果当Acitivity或Fragment被销毁时,在OnSuccess或OnError中执行UI操作,
                // 将导致程序奔溃 。用RealmAsyncTask .cancel();可以取消事务
                //在onStop或onDestroy中调用,避免crash
                realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student2 = realm.createObject(Student.class);
                        student2.setName("使用executeTransactionAsync监听");
                        student2.setNum(new Random().nextInt(100) + 300);
                    }
                }, new Realm.Transaction.OnSuccess() {
                    @Override
                    public void onSuccess() {
                        UIUtils.showToast("添加成功");
                    }
                }, new Realm.Transaction.OnError() {
                    @Override
                    public void onError(Throwable error) {
                        UIUtils.showToast("添加失败");
                    }
                });

这里写图片描述

将Json字符串转化为对象

  • 将Json字符串转化为对象(使用Json字符串插入数据)

模拟网络数据

{
  "reason": "SUCCESSED!",
  "result": [
    {
      "dapandata": {},
      "data": {
        "buyFive": "113700",
        "buyFivePri": "8.42",
        "buyFour": "87200",
        "buyThreePri": "8.35",
        "buyTwoPri": "8.36",
        "competitivePri": "8.37",
        "date": "2012-12-11",
        "gid": "sh601009",
        "increase": "43.99",
        "name": "南京银行",
        "nowPri": "8.37",
        "reservePri": "8.38",
        "sellFive": "214535",
        "time": "15:03:06",
        "todayMax": "8.55",
        "traAmount": "290889560",
        "traNumber": "34501453",
        "yestodEndPri": "8.26"
      },
      "gopicture": {
        "dayurl": "http://image.sinajs.cn/newchart/daily/n/sh601009.gif",
        "minurl": "http://image.sinajs.cn/newchart/min/n/sh601009.gif",
        "monthurl": "http://image.sinajs.cn/newchart/monthly/n/sh601009.gif",
        "weekurl": "http://image.sinajs.cn/newchart/weekly/n/sh601009.gif"
      }
    }
  ],
  "resultcode": "200"
}

创建数据库Model

package tsou.com.simple.realmtest.bean;

import io.realm.RealmObject;

/**
 * Created by Administrator on 2017/12/18 0018.
 * Realm 解析 JSON 时遵循如下规则:
 * <p>
 * 使用包含空值(null)的 JSON 创建对象:
 * 对于非必须(可为空值的属性),设置其值为 null;
 * 对于必须(不可为空值的属性),抛出异常;
 * 使用包含空值(null)的 JSON 更新对象:
 * 对于非必须(可为空值的属性),设置其值为 null;
 * 对于必须(不可为空值的属性),抛出异常;
 * 使用不包含对应属性的 JSON: * 该属性保持不变
 * <p>
 */

public class Stock extends RealmObject {


    /**
     * buyFive : 113700
     * buyFivePri : 8.42
     * buyFour : 87200
     * buyThreePri : 8.35
     * buyTwoPri : 8.36
     * competitivePri : 8.37
     * date : 2012-12-11
     * gid : sh601009
     * increase : 43.99
     * name : 南京银行
     * nowPri : 8.37
     * reservePri : 8.38
     * sellFive : 214535
     * time : 15:03:06
     * todayMax : 8.55
     * traAmount : 290889560
     * traNumber : 34501453
     * yestodEndPri : 8.26
     */

    private String buyFive;
    private String buyFivePri;
    private String buyFour;
    private String buyThreePri;
    private String buyTwoPri;
    private String competitivePri;
    private String date;
    private String gid;
    private String increase;
    private String name;
    private String nowPri;
    private String reservePri;
    private String sellFive;
    private String time;
    private String todayMax;
    private String traAmount;
    private String traNumber;
    private String yestodEndPri;

    public String getBuyFive() {
        return buyFive;
    }

    public void setBuyFive(String buyFive) {
        this.buyFive = buyFive;
    }

    public String getBuyFivePri() {
        return buyFivePri;
    }

    public void setBuyFivePri(String buyFivePri) {
        this.buyFivePri = buyFivePri;
    }

    public String getBuyFour() {
        return buyFour;
    }

    public void setBuyFour(String buyFour) {
        this.buyFour = buyFour;
    }

    public String getBuyThreePri() {
        return buyThreePri;
    }

    public void setBuyThreePri(String buyThreePri) {
        this.buyThreePri = buyThreePri;
    }

    public String getBuyTwoPri() {
        return buyTwoPri;
    }

    public void setBuyTwoPri(String buyTwoPri) {
        this.buyTwoPri = buyTwoPri;
    }

    public String getCompetitivePri() {
        return competitivePri;
    }

    public void setCompetitivePri(String competitivePri) {
        this.competitivePri = competitivePri;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getGid() {
        return gid;
    }

    public void setGid(String gid) {
        this.gid = gid;
    }

    public String getIncrease() {
        return increase;
    }

    public void setIncrease(String increase) {
        this.increase = increase;
    }

    public String getName() {
        return name;
    }

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

    public String getNowPri() {
        return nowPri;
    }

    public void setNowPri(String nowPri) {
        this.nowPri = nowPri;
    }

    public String getReservePri() {
        return reservePri;
    }

    public void setReservePri(String reservePri) {
        this.reservePri = reservePri;
    }

    public String getSellFive() {
        return sellFive;
    }

    public void setSellFive(String sellFive) {
        this.sellFive = sellFive;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getTodayMax() {
        return todayMax;
    }

    public void setTodayMax(String todayMax) {
        this.todayMax = todayMax;
    }

    public String getTraAmount() {
        return traAmount;
    }

    public void setTraAmount(String traAmount) {
        this.traAmount = traAmount;
    }

    public String getTraNumber() {
        return traNumber;
    }

    public void setTraNumber(String traNumber) {
        this.traNumber = traNumber;
    }

    public String getYestodEndPri() {
        return yestodEndPri;
    }

    public void setYestodEndPri(String yestodEndPri) {
        this.yestodEndPri = yestodEndPri;
    }
}

解析并插入数据库

mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        String stockJson = UIUtils.getJson("Stock");
                        try {
                            JSONObject js = new JSONObject(stockJson);
                            String result = js.optString("result");

                            JSONArray jsonArray = new JSONArray(result);
                            String resultOne = jsonArray.optString(0);

                            JSONObject js2 = new JSONObject(resultOne);
                            String data = js2.optString("data");
                            realm.createObjectFromJson(Stock.class, data);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                });

这里写图片描述

好了,到这里增添数据的方法基本上都介绍完了,如果数据多的话建议使用异步!其他功能请看下文!

Realm数据库使用教程(三):查询数据

Demo地址:https://gitee.com/huangxiaoguo/Realm


这里提供整个activity代码以供参考:

package tsou.com.simple.realmtest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import io.realm.Realm;
import io.realm.RealmAsyncTask;
import io.realm.RealmList;
import tsou.com.simple.realmtest.adapter.MyAdapter;
import tsou.com.simple.realmtest.bean.Men;
import tsou.com.simple.realmtest.bean.MorePerson;
import tsou.com.simple.realmtest.bean.Person;
import tsou.com.simple.realmtest.bean.Stock;
import tsou.com.simple.realmtest.bean.Student;
import tsou.com.simple.realmtest.bean.User;
import tsou.com.simple.realmtest.utils.UIUtils;

public class AddActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    private ListView mListview;
    private List<String> titles = new ArrayList<>();
    private Realm mRealm;
    private SimpleDateFormat simpleDateFormat;
    private RealmAsyncTask realmAsyncTask;

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (realmAsyncTask != null && !realmAsyncTask.isCancelled()) {
            realmAsyncTask.cancel();
        }
        if (mRealm != null && !mRealm.isClosed()) {
            mRealm.close();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        mRealm = UIUtils.getRealmInstance();
        simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        initData();
        initView();
        initListener();
    }

    private void initData() {
        //***********************同步操作*********************************
        //注意:如果在UI线程中插入过多的数据,可能会导致主线程拥塞。
        titles.add("同步操作:使用executeTransaction方法插入数据");
        titles.add("同步操作:使用copyToRealmOrUpdate方法插入数据");
        titles.add("同步操作:使用copyToRealm方法插入数据");
        titles.add("同步操作:增加一对一表,Person包含Men(以executeTransaction为例)");
        titles.add("同步操作:增加一对一表,Person包含一个Men(以copyToRealm为例)");
        titles.add("同步操作:增加一对多表,Person包含多个Men(以executeTransaction为例)");
        titles.add("同步操作:增加一对多表,Person包含多个Men(以copyToRealm为例)");
        titles.add("同步操作:beginTransaction和commitTransaction方法插入数据");
        //***********************异步操作*********************************
        titles.add("异步操作:使用executeTransactionAsync直接插入数据");
        titles.add("异步操作:使用executeTransactionAsync并且进行监听");
        //***********************将Json字符串转化为对象*****************
        titles.add("将Json字符串转化为对象(使用Json字符串插入数据)");
    }

    private void initView() {
        mListview = (ListView) findViewById(R.id.listview);

        mListview.setAdapter(new MyAdapter(this, titles));
    }

    private void initListener() {
        mListview.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        switch (position) {
            default:
                break;
            case 0://同步操作:使用executeTransaction方法插入数据
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student = realm.createObject(Student.class);
                        student.setName("使用executeTransaction方法插入数据");
                        student.setNum(new Random().nextInt(20));
                    }
                });
                break;
            case 1://同步操作:使用copyToRealmOrUpdate方法插入数据
                /**
                 * 当Model中存在主键的时候,推荐使用copyToRealmOrUpdate方法插入数据。
                 * 如果对象存在,就更新该对象;反之,它会创建一个新的对象。
                 */
                final User user = new User();
                user.setId(2);
                user.setName("使用copyToRealmOrUpdate方法插入数据");
                user.setAge(new Random().nextInt(20));
                user.setSex("同步");
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealmOrUpdate(user);
                    }
                });
                break;
            case 2://同步操作:使用copyToRealm方法插入数据
                /**
                 *若该Model没有主键,使用copyToRealm方法,否则将抛出异常。
                 */
                final Student student = new Student();
                student.setName("使用copyToRealm方法插入数据");
                student.setNum(new Random().nextInt(20));
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealm(student);
                    }
                });
                break;
            case 3://同步操作:增加一对一表,Person包含Men(以executeTransaction为例)
                //以executeTransaction为例
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Person person = realm.createObject(Person.class);
                        person.setCity("杭州");
                        person.setProject("android");

                        Men men = realm.createObject(Men.class);
                        men.setName("huangxiaoguo");
                        men.setAge(25);

                        person.setMen(men);

                    }
                });
                break;

            case 4://同步操作:增加一对一表,Person包含Men(以copyToRealm为例)
                final Person person1 = new Person();
                person1.setCity("杭州");
                person1.setProject("android");
                Men men1 = new Men();
                men1.setName("huangxiaoguo");
                men1.setAge(new Random().nextInt(100));
                person1.setMen(men1);
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        //如果使用copyToRealmOrUpdate,Person需要主键
                        realm.copyToRealm(person1);
                    }
                });
                break;
            case 5://同步操作:增加一对多表,Person包含多个Men(以executeTransaction为例)
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        MorePerson morePerson = realm.createObject(MorePerson.class);
                        morePerson.setCity("杭州");
                        morePerson.setProject("开发工程师");
                        morePerson.setTime(simpleDateFormat.format(new Date()));
                        for (int i = 0; i < 3; i++) {
                            Men men = realm.createObject(Men.class);
                            men.setName("huangxiaoguo" + i);
                            men.setAge(new Random().nextInt(100));
                            morePerson.getMens().add(men);
                        }


                    }
                });
                break;
            case 6://同步操作:增加一对多表,Person包含多个Men(以copyToRealm为例)
                final MorePerson morePerson1 = new MorePerson();
                morePerson1.setCity("杭州");
                morePerson1.setProject("开发工程师");
                morePerson1.setTime(simpleDateFormat.format(new Date()));
                RealmList<Men> menList = new RealmList<>();
                for (int i = 0; i < 3; i++) {
                    Men men2 = new Men();
                    men2.setName("huangxiaoguo" + i);
                    men2.setAge(new Random().nextInt(100));
                    menList.add(men2);
                }
                morePerson1.setMens(menList);
                for (int i = 0; i < 3; i++) {
                    Men men2 = new Men();
                    men2.setName("huangxiaoguo" + i);
                    men2.setAge(new Random().nextInt(100));
                    morePerson1.getMens().add(men2);
                }
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        realm.copyToRealm(morePerson1);
                    }
                });
                break;

            case 7://同步操作:beginTransaction和commitTransaction方法插入数据
                //注意:在UI和后台线程同时开启创建write的事务,可能会导致ANR错误。
                // 为了避免该问题,可以使用executeTransactionAsync来实现。
                mRealm.beginTransaction();//开启事务
                Student student1 = mRealm.createObject(Student.class);
                student1.setName("事务方式插入数据");
                student1.setNum(new Random().nextInt(100) + 100);
                mRealm.commitTransaction();
                break;

            case 8://异步操作:使用executeTransactionAsync直接插入数据
                //该方法会开启一个子线程来执行事务,并且在执行完成后进行结果通知。
                realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student2 = realm.createObject(Student.class);
                        student2.setName("使用executeTransactionAsync直接插入数据");
                        student2.setNum(new Random().nextInt(100) + 200);
                    }
                });

                break;

            case 9://异步操作:使用executeTransactionAsync并且进行监听
                //注意:如果当Acitivity或Fragment被销毁时,在OnSuccess或OnError中执行UI操作,
                // 将导致程序奔溃 。用RealmAsyncTask .cancel();可以取消事务
                //在onStop或onDestroy中调用,避免crash
                realmAsyncTask = mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Student student2 = realm.createObject(Student.class);
                        student2.setName("使用executeTransactionAsync监听");
                        student2.setNum(new Random().nextInt(100) + 300);
                    }
                }, new Realm.Transaction.OnSuccess() {
                    @Override
                    public void onSuccess() {
                        UIUtils.showToast("添加成功");
                    }
                }, new Realm.Transaction.OnError() {
                    @Override
                    public void onError(Throwable error) {
                        UIUtils.showToast("添加失败");
                    }
                });
                break;
            case 10://将Json字符串转化为对象(使用Json字符串插入数据)
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        String stockJson = UIUtils.getJson("Stock");
                        try {
                            JSONObject js = new JSONObject(stockJson);
                            String result = js.optString("result");

                            JSONArray jsonArray = new JSONArray(result);
                            String resultOne = jsonArray.optString(0);

                            JSONObject js2 = new JSONObject(resultOne);
                            String data = js2.optString("data");
                            realm.createObjectFromJson(Stock.class, data);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                });
                break;
        }
    }
}

Person类

package tsou.com.simple.realmtest.bean;

import io.realm.RealmObject;

/**
 * Created by Administrator on 2017/12/15 0015.
 */

public class Person extends RealmObject{
    private String city;
    private String project;
    private Men men;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getProject() {
        return project;
    }

    public void setProject(String project) {
        this.project = project;
    }

    public Men getMen() {
        return men;
    }

    public void setMen(Men men) {
        this.men = men;
    }
}

Men类

package tsou.com.simple.realmtest.bean;

import io.realm.RealmObject;

/**
 * Created by Administrator on 2017/12/15 0015.
 */

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

MorePerson类

package tsou.com.simple.realmtest.bean;

import io.realm.RealmList;
import io.realm.RealmObject;

/**
 * Created by Administrator on 2017/12/15 0015.
 */

public class MorePerson extends RealmObject {
    private String city;
    private String project;
    private String time;
    private RealmList<Men> mens;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getProject() {
        return project;
    }

    public void setProject(String project) {
        this.project = project;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public RealmList<Men> getMens() {
        return mens;
    }

    public void setMens(RealmList<Men> mens) {
        this.mens = mens;
    }
}

Realm数据库使用教程(三):查询数据

Demo地址:https://gitee.com/huangxiaoguo/Realm

版权声明:本文为huangxiaoguo1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huangxiaoguo1/article/details/78852001

智能推荐

SharePoint 2016 Project PWA 增加数据验证按钮

SharePoint 2016 Project 增加数据验证按钮...

Android使用MPAndroidChart 绘制折线图 可实时增加数据

目录   前言 项目导入 使用MPAndroidChart  使用到的类 使用方法 效果 前言         在使用这个功能的时候在网上找了不少资料,有的弄起来很麻烦,也有的很不好看。所以我写了一个小模块封装,减少重复性的开发。(或许是懒人模块?)不过这个自定义X轴显示也太麻烦了吧! (╯‵□&p...

TCP连接常见问题

TCP常见状态 LISTEN: 侦听来自远方的TCP端口的连接请求 SYN-SENT: 再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ESTABLISHED: 代表一个打开的连接 FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2: 从远程TCP等待连接中断请求 CLOSE-WAI...

centos7开启开机自动联网

将onboot选项的no改为yes 这个文件也可以将pc从dhcp修改为静态 ip配置 需要修改BOOTPROTO=dhcp为static,然后文件最后添加IP,GATEWAY,MASK,DNS...

猜你喜欢

R 基础知识:数据结构(data.frame & matrix & array)

1.data.frame data.frame是R语言用来处理表格式数据的数据结构。我们可以运用data.frame()函数手动创造数据框,让我们建立一个很简单的数据框叫做greatnbateams,这个数据框有队名、胜场数、败场数、是否获得总冠军与球季。 我们使用观测值(observations)来称呼数据框中水平方向的数据,使用变数(variables)来称呼数据框中垂直方向的数据;数据框能够...

mysql高级-视图

视图定义:是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影。 同一张表可以创建多个视图。 创建视图的语法: create view viewName as select语句 查询视图:和表一样,可以添加where条件。 修改视图:alter view viewName as select * from… 删除视图:drop view viewName. 查看视图结构:和表...

【cocos creater】9.仿《弓箭传说》- 子弹的碰撞

查看项目所有章节 接着上一章,编辑bullet.ts脚本文件,添加碰撞函数,此方法在元素发生碰撞时会调用 同时,编辑bullet精灵属性,添加碰撞组件 碰撞组件有三个,一个是矩形,一个是圆形,一个是自定义。这里我们任选一个都可以 分别给bullet,role,enemy三个元素都添加上碰撞组件 再打开enemy属性,选择group,点击编辑按钮,打开分组管理 分别添加role组,enemy组,bu...

HTML P不能包含块级元素(包括自身)(转)

abcc项目中碰到的,在一个表单中用P包含一个label和div,从Firebug中看html结构div却跑到P外面去了。甚是诧异,原来P元素是不能包含块级元素(包括P自身)的。 The P element represents a paragraph. It cannot contain block-level elements (including&nb...

centos mysql5.7 安装及初始化配置

1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/    2、安装MySQL 3、启动MySQL服务 4、配置MySQL   5、部分贴图...