概述
上篇的《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 {
    (autoincrement = true)//主键自增长
    Long id;//主键
    String sex;//性别
    int age;//年龄
    (joinProperty = "id")//一个员工有一个工牌
    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;//年龄
    (joinProperty = "id")//一个领导有一个工牌
    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();//获取所有员工 | 
结果: