- 前言
官方介绍关联关系的网址: 官方文档地址 。
- 一对一关系(To-One)
代码如下:其中建立关联关系重要的一个方法是addToOne()方法。
如上代码就会自动生成一个User对应一个Picture的一对一关联关系。在自动生成的User.java类中可以找到getPicture方法,从而可以通过User获取与之关联的Picture对象。在使用增删查改功能的时候,将Picture当作User的一个基本属性使用即可。
- 一对多(To-Many)
上述代码中addToMany方法是用于建立一个Customer对象对应多个Order对象。自动生成的Customer对象中会有一个getOrder方法,用户获取此用户关联的所有Order对象,返回的是一个集合。
在上面这个例子中,如果想通过Order通向获取Customer对象就比较复杂,因为Order对象中只有一个customerId属性。如果想通过Order对象获得与之对应的Customer对象,就需要建立双向关联关系;即用户对订单是一对多,一个订单对一个用户是一对一(注意:我说的是一个订单,有条件“一个”)。这样我们实现双向的关联代码如下:
上述代码其实就是使用toOne和toMany结合,实现双向的关联。
- 多对多
在GreenDao中并没有多对多的方法。但是我们可以曲线完成多对多的关系。比如创建一个中间表,使用中间表完成双向一对多关系。比如下图:
如图,学生和中间表是多对一,课程和中间表也是多对一,间接实现学生和课程之间的多对多关系。即我们可以使用2个addToMany完成多对多的关联关系。
由于缓存导致的更新BUG,官方给出了解决方案:
官方的示例代码:
- 最后
此篇主要介绍使用GreenDao怎么自动生成一对一、一对多的关联关系。之后的使用方式同上一节[基本使用篇]相同