Android ormlite 多對多關聯映射筆記

好吧,把這個多對多也記下來 代碼就是官方網站的示例代碼。 框架

 主要是瞭解查詢方式 這個映射卻是很好理解 在除了創建2個有多對多關係的實體類表以外還須要一張中間表 ide

大概是這麼個意思 post

user user_id  name 網站

postmpost_id contents   ui

userpost userpost_id user_id post_id  spa

 //這userpost裏具體實現應該是保存ID 可是在創建userpost類的時候 是寫入一個對象 而且寫入@DatabaseField(foreign = true, columnName = USER_ID_FIELD_NAME)代碼 讓其成爲外鍵 並指定列名.後面用到 框架自動處理了一些細節了。 對象

 

User user1 = new User("Jim Coakley"); it

userDao.create(user1); //保存第一個User對象 io

Post post1 = new Post("Wow is it cold outside!!"); List

postDao.create(post1);//保存第一個Post對象

 

UserPost user1Post1 = new UserPost(user1, post1);
  userPostDao.create(user1Post1); //保存Userpost對象 關聯他們的關係

List<Post> posts = lookupPostsForUser(user1); // 查詢第一個user1對象關聯的post對象

private PreparedQuery<Post> postsForUserQuery = null;
 private PreparedQuery<User> usersForPostQuery = null;

 private List<Post> lookupPostsForUser(User user) throws SQLException {
  if (postsForUserQuery == null) {
   postsForUserQuery = makePostsForUserQuery();  //準備查詢
  }
  postsForUserQuery.setArgumentHolderValue(0, user); //設置參數
  return postDao.query(postsForUserQuery);//查詢
 }

 

 private PreparedQuery<Post> makePostsForUserQuery() throws SQLException {


   QueryBuilder<UserPost, Integer> userPostQb = userPostDao.queryBuilder(); 


  userPostQb.selectColumns(UserPost.POST_ID_FIELD_NAME); //這個POST_ID_FIELD_NAME是前面設置的,就是咱們要查詢的post-id

至關於 select post_id from userpost where user_id=? 之類的 

SelectArg userSelectArg = new SelectArg();
  userPostQb.where().eq(UserPost.USER_ID_FIELD_NAME, userSelectArg);

  QueryBuilder<Post, Integer> postQb = postDao.queryBuilder();
  postQb.where().in(Post.ID_FIELD_NAME, userPostQb);
  return postQb.prepare();  //這上面都是參數設置阿 之類的 語法規則我沒深刻了解 只要知道到時候大概發送的是什麼語句就行了 代碼直接抄過來
 }

 如今也沒碰到有真正在項目中使用這種關係的,只是大概瞭解了這個查詢。感受還挺麻煩的,對這個框架仍是不太熟悉呀。~~

相關文章
相關標籤/搜索