日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android ORM-GreenDao學習二之進階篇

Android ORM-GreenDao學習二之進階篇

來源:程序員人生   發布時間:2015-05-12 09:01:10 閱讀次數:5450次

概述

本文講述GreenDao對關系數據的支持。分別為
ToOne, 
ToMany.
雙向關聯
Tree Relations

To-One

相當于外鍵關系。
// The variables "user" and "picture" are just regular entities Property pictureIdProperty = user.addLongProperty("pictureId").getProperty(); user.addToOne(picture, pictureIdProperty);
這將致使產生的User實體類中有1個Picture屬性(getPicture/setPicture);

Relation Names and multiple Relations

每個關聯都有1個名稱。默許情況下關聯的名稱就是目標實體的名稱。所以1般情況下建議主動設置該關聯的名稱以避免重名。可以通過setName()來設置。
Property pictureIdProperty = user.addLongProperty("pictureId").getProperty(); Property thumbnailIdProperty = user.addLongProperty("thumbnailId").getProperty(); user.addToOne(picture, pictureIdProperty);//使用默許的關系名 user.addToOne(picture, thumbnailIdProperty, "thumbnail");//為了避免重名,設置關系名為thumbnail
Property customerId = order.addLongProperty("customerId").notNull().getProperty(); ToMany customerToOrders = customer.addToMany(order, customerId); customerToOrders.setName("orders"); // Optional customerToOrders.orderAsc(orderDate); // Optional
產生的代碼中Customer類將多出1個getOrders()
List orders = customer.getOrders();

Resolving and Updating To-Many Relations

To-Many解析第1次使用懶加載,但是1旦加載以后to-many list就會被緩存到1個List當中,后續的要求不會再通過數據庫,而是直接從緩存中返回,所以1旦修改以后,需要對緩存中的數據進行更新。
由于緩存的作用下面的代碼會產生使人困惑的結果:
List orders1 = customer.getOrders(); int size1 = orders1.size(); Order order = new Order(); order.setCustomerId(customer.getId()); daoSession.insert(order); Listorders2 = customer.getOrders(); // size1 == orders2.size(); // NOT updated // orders1 == orders2; // SAME list object
所以我們需要對緩存進行Updating
改正后的代碼以下:
List orders = customer.getOrders(); newOrder.setCustomerId(customer.getId()); daoSession.insert(newOrder); orders.add(newOrder);//更新緩存
對刪除操作也是1樣的。:
List orders = customer.getOrders(); daoSession.delete(newOrder); orders.remove(newOrder);//更新緩存
但是如果有個時候這些沒法到達你預期的要求或是更新緩存比較困難的情況下,沒關系greendao還提供以下方法resetXxx()重置緩存
customer.resetOrders(); List orders2 = customer.getOrders();

雙向關聯To-One與To-many結合使用

Entity customer = schema.addEntity("Customer"); customer.addIdProperty(); customer.addStringProperty("name").notNull(); Entity order = schema.addEntity("Order"); order.setTableName("ORDERS"); // "ORDER" is a reserved keyword order.addIdProperty(); Property orderDate = order.addDateProperty("date").getProperty(); Property customerId = order.addLongProperty("customerId").notNull().getProperty(); order.addToOne(customer, customerId); ToMany customerToOrders = customer.addToMany(order, customerId); customerToOrders.setName("orders"); customerToOrders.orderAsc(orderDate);
這樣便產生了雙向關聯了。
List allOrdersOfCustomer = order.getCustomer().getOrders();

Many-to-Many Relations (n:m)

目前greendao還沒有實現。

Modelling Tree Relations

You can model a tree relation by modelling an entity having a to-one and a to-many relation pointing to itself:
Entity treeEntity = schema.addEntity("TreeEntity"); treeEntity.addIdProperty(); Property parentIdProperty = treeEntity.addLongProperty("parentId").getProperty(); treeEntity.addToOne(treeEntity, parentIdProperty).setName("parent"); treeEntity.addToMany(treeEntity, parentIdProperty).setName("children");
然后再生成的代碼中我們就能夠進行導航了:
TreeEntity parent = child.getParent(); List grandChildren = child.getChildren();


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 污网站在线播放 | 看a网站| 天天干天天爱天天爽 | 久久久ww| 免费看黄a | 亚洲国产精品影院 | 精品久久中文字幕97 | 欧美精品一卡 | 国产精品精品视频一区二区三区 | 国产成人午夜视频 | 国产精品视频播放 | 国产麻豆| 亚洲福利在线观看 | 国内免费av | 亚洲一区在线免费 | 成人精品在线观看 | 国产在线91在线电影 | 91精品啪在线观看国产手机 | 亚洲一区二区三区在线电影 | 日本a视频 | 91超碰中文字幕久久精品 | 亚洲成人av | 美女一级黄色毛片 | 欧美插插插 | 成人在线视频免费 | 精品国产髙清在线看国产毛片 | 人人射人人 | 超碰在线久 | 天堂中文最新版在线网 | 日韩综合色 | 国产精品成人一区二区 | 国产成人精品av在线 | aaaaaa视频| 国产视频在线一区二区 | 亚洲乱码一区二区 | 99精品国产免费久久久久久按摩 | 99精品国产一区二区三区 | 国产精品一二三区 | 欧美精品国产精品 | 色黄啪啪网 | 99久久精品免费看国产免费软件 |