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


欢迎来到安卓本地轻量级数据库操作框架 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();
            }
        }

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半颗心脏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值