GreenDao3.0配置及使用

本文详细介绍了GreenDao3.0的配置步骤,包括Gradle配置、依赖添加等,并通过创建Person实体类演示如何进行数据的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、GreenDao3.0的配置

1、在build.gradle的目录中添加如下代码

apply plugin: 'org.greenrobot.greendao'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

greendao {
    //数据库的版本号,如果添加表,或者某表结构改变了要修改这个,否则,再次运行会报没有这个表或者没有这个列的错误
    schemaVersion 1
    //可以自己定义,存放Dao的路径
    daoPackage 'com.trt.greendao.gen'
    //生成数据库文件的目录,可以将生成的文件放到我们的java目录中,而不是build中,这样就不用额外的设置资源目录了
    targetGenDir 'src/main/java'
}

2、在根目录dependencies下添加包的依赖

    compile 'org.greenrobot:greendao:3.0.1'
    compile 'org.greenrobot:greendao-generator:3.0.0'

二、开始使用

创建一个Person实体类并创建该表

@Entity
public class Person {
    @Id
    private Long id;
    private String name;
    private String sex;
    private String address;
    private String phone;
    private String email;
    @Transient
    private String aa;
    }

编译之后就会变成这个样子(多了set和get方法)

@Entity
public class Person {
    @Id
    private Long id;
    private String name;
    private String sex;
    private String address;
    private String phone;
    private String email;
    @Transient
    private String aa;
    public String getAddress() {
        return this.address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getSex() {
        return this.sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public String getPhone() {
        return this.phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return this.email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Generated(hash = 1113691994)
    public Person(Long id, String name, String sex, String address, String phone, String email) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.address = address;
        this.phone = phone;
        this.email = email;
    }
    @Generated(hash = 1024547259)
    public Person() {
    }
}

同时看你的目录结构是不是多了你刚刚在build.gradle中写的那个目录
这里写图片描述

在该目录下可以看到多了三个文件

  • DaoMaster
  • DaoSession
  • PersonDao

当你在此创建实体类的时候就会出现相应的xxXDao文件,而DaoMaster和DaoSession只有一份,但是里面的内容会不断的更新。

准备工作弄完了,那怎么得到想要的数据库和怎么操作呢?

写一个工具类用来获取xxXDao文件(xxXDao文件是进行操作的)

public class GreenDaoManager {

    private static GreenDaoManager mInstance;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;

    private GreenDaoManager() {
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MainApplication.getContext(),"数据库名称", null);
        mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        mDaoSession = mDaoMaster.newSession();
    }

    public static GreenDaoManager getInstance() {
        if (mInstance == null) {
            mInstance = new GreenDaoManager();
        }
        return mInstance;
    }

    public DaoSession getSession() {
        return mDaoSession;
    }

}

我们可以在Application中对数据库进行初始化

GreenDaoManager.getInstance();

三、得到xxXDao对象进行增删改查

1、得到xxXDao对象

        PersonDao personDao = GreenDaoManager.getInstance().getSession().getPersonDao();

2、添加数据

Person person = new Person(1l,"美年","女","南京","15523439808","dddd");
//使用事务插入数据,若数据存在 就覆盖之前的内容(一般后缀带Tx的都是事务性操作)
personDao.insertOrReplaceInTx(person);

3、删除数据


PersonDao personDao = GreenDaoManager.getInstance().getSession().getPersonDao();

Person person = personDao.load(3l);
     if(person!=null){
        personDao.delete(person);
     }

4、修改数据

PersonDao personDao = GreenDaoManager.getInstance().getSession().getPersonDao();

Person person = personDao.load(3l);
     if(person!=null){
         person.setName("呵呵");
     }
//使用事务更新数据
personDao.updateInTx(person);

5、查找数据

//获取xxXDao对象
PersonDao personDao = GreenDaoManager.getInstance().getSession().getPersonDao();
//查询所有的数据
personDao.loadAll();
//根据key值查数据
personDao.load(1l);
//根据where条件查询数据,返回为List集合
        personDao.queryBuilder().where(PersonDao.Properties.Sex.eq("男")).build().list();
//根据where条件查询数据,返回为一个
        personDao.queryBuilder().where(PersonDao.Properties.Id.eq(1l)).build().unique();

四、greendao中的注解

  • 1、 @Entity 定义实体
    @nameInDb 在数据库中的名字,如不写则为实体中类名
    @indexes 索引
    @createInDb 是否创建表,默认为true,false时不创建
    @schema 指定架构名称为实体
    @active无论是更新生成都刷新

  • 2、@Id主键

  • 3、@NotNull 不为null

  • 4、@Unique 唯一约束

  • 5、@ToMany一对多

  • 6、@OrderBy 排序

  • 7、@ToOne 一对一

  • 8、 @Transient 不存储在数据库中

  • 9、@generated 由greendao产生的构造函数或方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值