zoukankan      html  css  js  c++  java
  • 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());
                }
            }
        }
  • 相关阅读:
    记录我发现的第一个关于 Google 的 Bug
    iOS 中的 Delayed Transition
    Appstore|IPA
    地图|定位
    开发者账号
    App跳转
    国际化
    短信|彩信
    闪光灯
    Cornerstone|SVN
  • 原文地址:https://www.cnblogs.com/chenrui7/p/3568100.html
Copyright © 2011-2022 走看看