Android ormlite 多对多关联映射笔记

好吧,把这个多对多也记下来 代码就是官方网站的示例代码。

 主要是了解查询方式 这个映射倒是很好理解 在除了建立2个有多对多关系的实体类表之外还需要一张中间表

大概是这么个意思

user user_id  name

postmpost_id contents  

userpost userpost_id user_id post_id 

 //这userpost里具体实现应该是保存ID 但是在建立userpost类的时候 是写入一个对象 并且写入@DatabaseField(foreign = true, columnName = USER_ID_FIELD_NAME)代码 让其成为外键 并指定列名.后面用到 框架自动处理了一些细节了。

 

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

userDao.create(user1); //保存第一个User对象

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

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

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

 

转载于:https://my.oschina.net/u/1012890/blog/123500

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值