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();  //这上面都是参数设置阿 之类的 语法规则我没深刻了解 只要知道到时候大概发送的是什么语句就行了 代码直接抄过来
 }

 如今也没碰到有真正在项目中使用这种关系的,只是大概了解了这个查询。感受还挺麻烦的,对这个框架仍是不太熟悉呀。~~

相关文章
相关标签/搜索