安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo③—— 一对多关系操作。

时间:2021-10-30 19:50:41

欢迎来到安卓本地轻量级数据库操作框架 greenDao3.2.2 学习之旅。


本套框架博客系列博客目录:



  • 通过下面这张图,大家很清楚地明白本篇博文要讲的是什么主题吧?没错,就是对象一对多的关系。下面这张图表示的意思是:家乡是北京的人有小明和小枫,而家乡是广州的人有小芳和小花。

    • 下面延伸的意义为 一个家乡对应多个人,但是一个人只能对应一个家乡。
  • 安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo③—— 一对多关系操作。


  • 效果图

安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo③—— 一对多关系操作。


一、键键关联。


第一步:因为我们的“人”只能对应一个“家乡”,所以,在我们的 user表里面加上:

    //关联家乡
@ToOne(joinProperty = "homeDownId")
private HomeTown homeTown;

//关联家乡的主键,关联家乡的“ToMany”
private Long homeDownId;

第二步:在我们的“家乡”表加上以下代码:

    //关联人的外键,在创建一个新的“家乡”对象时候,可以传这个id进来表示该 id的对象将存在这个家乡里面
private Long userId;

//对接具体人的外键
@ToMany(referencedJoinProperty = "homeDownId")
private List<User> userList;

第三步:点击make project ,我们发现在我们的user .java文件中新增的代码中出现的构造方法2个,一个是无参的构造方法。这个有参数的构造方法,旨在大家可以指定一个人的“家乡”!当然啦。如果你不想先设置家乡,就先用无参的构造方法吧,再一步一步设置参数。


安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo③—— 一对多关系操作。


二、设置家乡。


  • 设置某个人为北京
    //先拿到user表下所有的用户,返回一个list集合
List<User> userList=DBManager.getmInstance().getSession().getUserDao().loadAll();
//新建一个“北京”家乡
HomeTown beijing = new HomeTown(null, "北京",userList.get(0).getHomeDownId());
//先将这个家乡插入数据库
DBManager.getmInstance().getSession().getHomeTownDao().insert(beijing);
//将某个用户设置家乡为北京
userList.get(1).setHomeTown(beijing);
//更新一下 DBManager.getmInstance().getSession().getUserDao().insertOrReplace(userList.get(1));

  • 获取家乡是北京的所有人。
   //先拿到数据库下的家乡列表
List<HomeTown> homeTownList = DBManager.getmInstance().getSession().getHomeTownDao().loadAll();
for (int i = 0; i < homeTownList.size(); i++) {
if (homeTownList.get(i).getName().equals("北京")) {
Toast.makeText(MainActivity.this, "家乡是北京的所有用户,名字:" + homeTownList.get(i).getUserList().get(0).getName()
+ ",年龄:" + homeTownList.get(i).getUserList().get(0).getAge()
, Toast.LENGTH_SHORT).show();
}
}

demo下载:https://gitee.com/HalfHeart/GreenDaoDemo2