GreenDao3.0学习(二)

这一章主要介绍greendao的注解已经成功生成数据库和数据表

在前面一篇GreenDao3.0学习(一)中,我们对GreenDao3.0进行了简单的了解,并对GreenDao3.0在android studio中的配置过程进行了简单的说明。在上一篇中,我们自动生成 了三个java文件,特别是UserBeanDao.java,为什么会生成这个文件呢??
这篇文章我们主要对这点进行说明,

相关注解及说明

@Entity,没错,就是它,因为有了它,我们的实体类就会被greendao3.0识别,然后自动生成一个UserBeanDao.java。

注解名称说明
schema使得GreenDao知道当前实体属于哪个schema
active标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
nameInDb在数据中使用的别名,默认使用的是实体的类名
indexes定义索引,可以跨越多个列
createInDb标记创建数据库表
@Entitygreendao的一个实体注解,因为有了它,我们的实体类才回被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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值