好吧,把這個多對多也記下來 代碼就是官方網站的示例代碼。 框架
主要是瞭解查詢方式 這個映射卻是很好理解 在除了創建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(); //這上面都是參數設置阿 之類的 語法規則我沒深刻了解 只要知道到時候大概發送的是什麼語句就行了 代碼直接抄過來
}
如今也沒碰到有真正在項目中使用這種關係的,只是大概瞭解了這個查詢。感受還挺麻煩的,對這個框架仍是不太熟悉呀。~~