http://www.jianshu.com/p/05782b598cf0
http://blog.csdn.net/baidu_26994091/article/details/51893798
关键字:
@DatabaseTable表名:如@DatabaseTable(tableName = "run_train_report")如果不指定名字,在Android中会以类名作为表名
@DatabaseField字段名:如:@DatabaseField(columnName = "userId")id = true表示作为主键
defaultValue="男" 默认值
ormlite的外键约束(一对一、一对多关系)
如果是一对一,我们还是用@DatabaseField注解,但要指定(foreign = true)表示是一个外键。(foreign大哥那边),小弟不用
@DatabaseField(foreign=true,foreignAutoRefresh=true,columnName = "xxx") //foreign 表示外键 foreignAutoRefresh 表示 自动查询(当查询该对象的时候会自动查询他的外键对象)
一对多关系:
外键字段:注:要实现一对多关系,一定要这样定义,不然会出错。
(大哥那边 ForeignCollection)一那边
@ForeignCollectionField(eager = true) // 必须 表示eager = true依赖加载 就是当查询该对象的时候 也会立即查询出他所带的 集合
public ForeignCollection<Style> styles;
(小弟那边)(n)小弟也要加foreign表示一个外键
@DatabaseField(foreign = true, foreignAutoRefresh = true)
public User Users;
@DatabaseTable(tableName = "person" ) //设置表的名字
@DatabaseField(generatedId = true) //generatedId 自增涨 不一定是id
int id;
@DatabaseField(canBeNull = true, defaultValue = "name") // canBeNull 表示是否可以为空 defaultValue 默认值
String name;
@DatabaseField(id = true) // id 表示主键
int card ;
/****************************************************************************************************************************************/
一对一
@DatabaseField(foreign=true,foreignAutoRefresh=true) //foreign 表示外键 foreignAutoRefresh 表示 自动查询(当查询该对象的时候会自动查询他的外键对象)
private Department depa;
/****************************************************************************************************************************************/
一对多 必须两方是都添加相应的属性
一的一方
@ForeignCollectionField
private ForeignCollection<User> users; //必须用ForignCollection 或者 Collection
在一方的数据库里面不会产生该字段 ,如果产生一个存放多方的字段,你想他怎么存
查找的时候去 拿着 的一方的“主键”值去多的一方数据库里面将所有数据符合条件的数据都查
@ForeignCollectionField(eager = true) //eager 表示依赖加载 就是当查询该对象的时候 也会立即查询出他所带的 集合
多的一方
@DatabaseField(foreign=true,foreignAutoRefresh=true)
如果不指定字段的具体名字就会将 命名为 属性名_id 这里就是depa_id
该字段会存放多的一方的主键