欢迎来到安卓本地轻量级数据库操作框架 greenDao3.2.2 学习之旅。
本套框架博客系列博客目录:
-
通过下面这张图,大家很清楚地明白本篇博文要讲的是什么主题吧?没错,就是对象一对多的关系。下面这张图表示的意思是:家乡是北京的人有小明和小枫,而家乡是广州的人有小芳和小花。
- 下面延伸的意义为 一个家乡对应多个人,但是一个人只能对应一个家乡。
- 效果图
一、键键关联。
第一步:因为我们的“人”只能对应一个“家乡”,所以,在我们的 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个,一个是无参的构造方法。这个有参数的构造方法,旨在大家可以指定一个人的“家乡”!当然啦。如果你不想先设置家乡,就先用无参的构造方法吧,再一步一步设置参数。
二、设置家乡。
- 设置某个人为北京
//先拿到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();
}
}