android对象关系映射框架ormlite学习之多对多(ManyToMany)

本文探讨了如何使用ORMlite在Android上处理多对多(ManyToMany)关系。通过创建关联表解决此类数据库关系,并以项目(Project)与用户(User)为例,阐述了这种关系的实现方式。文中提供了详细的代码注释和运行效果截图。

前面介绍了ormlite操作单张表以及多表之间的一对多(多对一)的关系(请参考android对象关系映射框架ormlite学习之单表操作android关系映射框架ormlite学习之OneToMany),但是我们还经常会遇到多对多的数据库表关系,在处理多对多的关系表时,ormlite官方给出的解决方案是通过建立第三张关联表来解决的。这里通过这个解决方案来解决我们最后一个关于多对多关系。

我假设的场景是项目(Project)和用户(User),即一个用户参与多个项目,而一个项目又由多个人员进行开发,构成多对多的关系。同样的对于中间重要的方法类注释在代码中。首先同样给出运行效果图:



实体用户类User.java

@DatabaseTable(tableName = "tb_user")
public class User {
	//这里用一个常量来设置属性的名字,这样我们在中就可以直接使用该名字
	public final static String ID_FIELD_NAME = "user_id";
	//用户编号
	@DatabaseField(generatedId=true,columnName=ID_FIELD_NAME)
	private int userId;
	//用户名
	@DatabaseField
	private String userName;
	
	public User() {
		//提供无参构造函数,这样查询的时候可以返回查询出来的对象
	}
	public User( int userId,String userName) {
		this.userId = userId;
		this.userName = userName;
	}
	get/set方法
}
实体项目类Project.java

/**
 * 项目类(假设一个用户参与多个项目,一个项目又由多个用户参与负责)
 * @author leox
 *
 */
@DatabaseTable(tableName="tb_project")
public class Project {
	public final static String ID_FIELD_NAME = "project_id";
	//项目编号
	@DatabaseField(generatedId=true,columnName=ID_FIELD_NAME)
	private int projectId;
	//项目名
	@DatabaseField
	private String projectName;
	public Project() {}
	public Project(int projectId, String projectName) {
		this.projectId = projectId;
		this.projectName = projectName;
	}
	get/set方法
}
用户项目关联类

/**
 * 用户项目关联类
 *(用ormlite实现ManyToMany需要在数据库中建立一张关联表)
 * @author leox
 *
 */
@DatabaseTable(tableName="tb_user_project")
public class UserProject {
	public final static String USER_ID_FIELD_NAME = "user_id";
	public final static String PROJECT_ID_FIELD_NAME = "project_id";
	//用户项目编号
	@DatabaseField(generatedId=true)
	private int id;
	//关联用户表
	@DatabaseField(foreign = true,colum
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值