这一章主要介绍greendao的注解已经成功生成数据库和数据表
在前面一篇GreenDao3.0学习(一)中,我们对GreenDao3.0进行了简单的了解,并对GreenDao3.0在android studio中的配置过程进行了简单的说明。在上一篇中,我们自动生成 了三个java文件,特别是UserBeanDao.java,为什么会生成这个文件呢??
这篇文章我们主要对这点进行说明,
相关注解及说明
@Entity
,没错,就是它,因为有了它,我们的实体类就会被greendao3.0识别,然后自动生成一个UserBeanDao.java。
注解名称 | 说明 |
---|---|
schema | 使得GreenDao知道当前实体属于哪个schema |
active | 标记一个实体处于活动状态,活动实体有更新、删除和刷新方法 |
nameInDb | 在数据中使用的别名,默认使用的是实体的类名 |
indexes | 定义索引,可以跨越多个列 |
createInDb | 标记创建数据库表 |
@Entity | greendao的一个实体注解,因为有了它,我们的实体类才回被greendao识别并生成一个dao |
@Id | 主键 Long型(默认是自增长的)也可以通过@Id(autoincrement = true)设置自增长 |
@Property | 置一个非默认关系映射所对应的列名,默认是的使用字段名 比如:@Property (nameInDb="name") |
@NotNull | @NotNull 标记后,表示这个属性在数据表中的这一列不能为空 |
@Transient | 添加这个标记之后,我们在实体类中的属性不会自动在数据表中生成这个属性表示的这一列 |
@Index | 使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束 |
@Unique | 向数据库列添加了一个唯一的约束 |
@ToOne | 定义与另一个实体(一个实体对象)的关系,即一对一 |
@ToMany | 定义与多个实体对象的关系 即一对多 |
@JoinEntity | 多对多 |
referencedJoinProperty | 指定目标实体中与源实体相对应的外键。 |
joinProperty | 对于复杂一点的关系可以定义一组@JoinProperty注解。每个@JoinProperty注解都需要有源实体中的源属性和对应实体中的引用属性。 |
示例:
首先我们需要创建一个数据库 这里我们用一个GreenDaoManager.java类来管理数据库。
public class GreenDaoManager {
private static GreenDaoManager mInstance;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
private DaoMaster.DevOpenHelper devOpenHelper;
public GreenDaoManager() {
//创建一个数据库
devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(), "greendao-db", null);
DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
mDaoSession = mDaoMaster.newSession();
}
public static GreenDaoManager getInstance() {
if (mInstance == null) {
mInstance = new GreenDaoManager();
}
return mInstance;
}
public DaoMaster getMaster() {
return mDaoMaster;
}
public DaoSession getSession() {
return mDaoSession;
}
public DaoSession getNewSession() {
mDaoSession = mDaoMaster.newSession();
return mDaoSession;
}
/**
* 关闭数据连接
*/
public void close() {
if (devOpenHelper != null) {
devOpenHelper.close();
}
}
}
这里会有一个application ,如下:
public class MyApplication extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
GreenDaoManager.getInstance();
}
public static Context getContext() {
return mContext;
}
}
注意不要忘了在AndroidManifest.xml中处理:
然后我们运行程序,就可以看生成了一个数据库
现在我们导出来看看里面是什么。
我们可以看到生成了数据表,并且里面的列的名就是我们自动生成的Dao中的名称。
咦~,等等,好像有什么不对,
我们看看我们的UserBean1.java文件,
age
怎么没有生成呢 ?这就是@Transient的作用了,
好了,现在我们的数据库以及数据表已经生成,至于其他注解,我们可以参照官网一个一个去试试。。。
特别提醒:自增长的Id一定是Long
类型的
项目相关地址:https://github.com/mutounaodai/Greendao
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。