Android Ormlite 学习笔记2 -- 主外键关系

以上一篇为例子,进行主外键的查询

定义Users.java 和 Role.java

Users -- Role 关系为:1对1 即父表关系

Role -- Users 关系为:1对多 即子表关系

 

下面看2个实体类,贴主要代码

 

-- Role.java

    public ForeignCollection<Users> getUsers() {
        return users;
    }

    public void setUsers(ForeignCollection<Users> users) {
        this.users = users;
    }

    @ForeignCollectionField(eager = true) // 必须
    private ForeignCollection<Users> users;

 

 -- Users.java

    @DatabaseField(foreign = true, foreignColumnName = "rid")
    private Role role;

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

 

1对1关系很简单,也很神奇的地方是直接调用就可以了。

    /**
     * 一对一
     * 
     * @throws SQLException
     */
    public void testSelect() throws SQLException {
        List<Users> datas = userDao.queryForAll();
        for (Users user : datas) {
            Log.i("chenrui", "[name]" + user.getName());
            Log.i("chenrui", "[Role]:" + user.getRole().getName());
        }
    }

 

 

1对多关系,因为ForeignCollection<T> 继承了 这几个 CloseableIterable<T>, Collection<T>, Iterable<T> 接口,所以ForeignCollection<T>是可以使用foreach遍历。

    /**
     * 一对多
     * 
     * @throws SQLException
     */
    public void testSelctMore() throws SQLException {
        ForeignCollection<Users> datas = roleDao.queryForId("1").getUsers();
        if (!datas.isEmpty()) {
            for (Users user : datas) {
                Log.i("chenrui", "User:" + user.getName());
            }
        }
    }

 

 

你可能感兴趣的:(android)