概述
上篇的《GreenDao的使用(一)》是大概介绍了一下GreenDao的理论知识,这次尝试用GreenDao做一些实际项目中的需求。更多的是为展示GreenDao的优点。
需求分析
实际使用需结合具体的需求,如图:
这是一个简化的公司关系图,需要注意的是一对一和多对多的关系。通过查询一个员工,可以关联到该员工的领导以及工牌信息。就是今天主要做的功能。
具体实现
创建Entity
根据需求可以知道需要三个Entity,分别是Employee,leader,IDCard
Employee.class1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Employee {
true)//主键自增长 (autoincrement =
Long id;//主键
String sex;//性别
int age;//年龄
"id")//一个员工有一个工牌 (joinProperty =
IDCard idCard;
//员工与领导的绑定关系
(entity = LeaderJoinEmployee.class,
sourceProperty = "eId",
targetProperty = "lId")
List<Leader> leaderList;//一个员工有多个领导
}
Leader.class:1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Leader {
//(autoincrement = true)//自增长
Long id;//主键
String sex;//性别
int age;//年龄
"id")//一个领导有一个工牌 (joinProperty =
IDCard idcard;
//领导与员工的绑定关系
(entity = LeaderJoinEmployee.class,
sourceProperty = "lId",
targetProperty = "eId")
List<Employee> employeeList;//一个领导管理着多个员工
}
IDCard.class:1
2
3
4
5
6
7
8
public class IDCard {
Long id;//主键
String name;//姓名
//工号不可重复
String employeeNo;//工号
}
这里还需要一个领导与员工多对多的关系表
LeaderJoinEmployee.class:1
2
3
4
5
6
7
public class LeaderJoinEmployee {
private Long id;
private Long lId;//领导id
private Long eId;//员工id
}
绑定关系
1 | IDCard idCard1 = new IDCard(null,"Tom","N111111");//有多少人就有多少个工牌,以工牌对应人 |
查看关系
1 | List<Employee> employeeList = MyApplication.getDaoSession().queryBuilder(Employee.class).list();//获取所有员工 |
结果: