@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
该字段会存放多的一方的主键
/****************************************************************************************************************************************/
多对多
需要 建一个第三方做为 一的一方
多 ---- 一 ------多
多对多用的很少
/****************************************************************************************************************************************/
常用操作:
数据库查询操作:
一种是条件与:
一种是条件或:
条件与 和条件或 相结合:
Where where = queryBuilder.where();
where.or(where.and(where.eq(Account.NAME_FIELD_NAME, "foo"), where.eq(Account.PASSWORD_FIELD_NAME, "_secret")),
where.and(where.eq(Account.NAME_FIELD_NAME, "bar"), where.eq(Account.PASSWORD_FIELD_NAME, "qwerty")));
多表联合查询 一个表的queryBuider 添加到另一个 queryBuilder中 实现两个表联合查询
public List<LocalBmiData> getBmiData() {
MeasureDataDbHelper helper = GDbHelperManager.getHelper(mContext,
MeasureDataDbHelper.class);
try {
Dao<DaoMeasureDataState, Integer> daoState = helper
.getDao(DaoMeasureDataState.class);
Dao<LocalBmiData, String> dao = helper.getDao(LocalBmiData.class);
QueryBuilder<DaoMeasureDataState, Integer> stateBuilder = daoState
.queryBuilder();
stateBuilder.where().eq("datatype", DataType.BMI).and()
.raw("id=bmi_data_tab.id");
QueryBuilder<LocalBmiData, String> builder = dao.queryBuilder();
builder.where().not().exists(stateBuilder);
builder.orderBy("id", false);// 按id降序排列
return builder.query();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}