GreenDao集成使用

本文详细介绍了如何在Android项目中集成并使用GreenDao框架,包括依赖配置、实体类定义、数据库操作类创建及基本的增删查改操作。

1、在项目中引入greendao,配置如下

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.android.support:appcompat-v7:27.1.1'

implementation 'com.android.support.constraint:constraint-layout:1.1.2'

testImplementation 'junit:junit:4.12'

androidTestImplementation 'com.android.support.test:runner:1.0.2'

androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

implementation 'com.android.support:design:27.1.1'

implementation 'org.greenrobot:greendao:3.2.2' // add library

implementation 'org.greenrobot:greendao-generator:3.2.2'
复制代码

}

2、在model级别的gradle中配置greendao,需要配置两个地方,配置如下

apply plugin: 'org.greenrobot.greendao'

android {

.....

}

buildscript {

repositories {

    mavenCentral()

}

dependencies {

    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

}
复制代码

}

3、在model级别下的gradle中配置greendao的版本等信息,配置如下

greendao {

//版本(每次修改数据库需要升级,每次修改都需要将版本号进行升级)

schemaVersion 4

// 生成文件包名(一般为app包名+生成文件的文件夹名)

daoPackage 'mycode.com.mycode.greendao.gen'

//生成文件路径

targetGenDir 'src/main/java'
复制代码

}

buildscript {

...
复制代码

}

4、新建实体UserInfo,make项目即可生成对应文件

@Entity

public class UserInfo implements Parcelable {

@Id

private Long id;

private String name;

@Generated(hash = 574809764)

public UserInfo(Long id, String name) {

    this.id = id;

    this.name = name;

}

@Generated(hash = 1279772520)

public UserInfo() {

}

protected UserInfo(Parcel in) {

    if (in.readByte() == 0) {

        id = null;

    } else {

        id = in.readLong();

    }

    name = in.readString();

}

public static final Creator CREATOR = new Creator() {

    @Override

    public UserInfo createFromParcel(Parcel in) {

        return new UserInfo(in);

    }

    @Override

    public UserInfo[] newArray(int size) {

        return new UserInfo[size];

    }

};

public Long getId() {

    return this.id;

}

public void setId(Long id) {

    this.id = id;

}

public String getName() {

    return this.name;

}

public void setName(String name) {

    this.name = name;

}

@Override

public int describeContents() {

    return 0;

}

@Override

public void writeToParcel(Parcel parcel, int i) {

    if (id == null) {

        parcel.writeByte((byte) 0);

    } else {

        parcel.writeByte((byte) 1);

        parcel.writeLong(id);

    }

    parcel.writeString(name);

}
复制代码

}

5、在项目的Application中创建有关数据库的操作类,配置如下

public class MyApplication extends Application{

private DaoMaster.DevOpenHelper mHelper;

private SQLiteDatabase db;

private DaoMaster mDaoMaster;

private DaoSession mDaoSession;

//静态单例

public static MyApplication instances;

@Override

public void onCreate() {

    super.onCreate();

    instances = this;

    setDatabase();

}

public static MyApplication getInstances(){

    return instances;

}

/**

* 设置greenDao

*/

private void setDatabase() {

    // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。

    // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。

    // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。

    // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。

    mHelper = new DaoMaster.DevOpenHelper(this, "sport-db", null);

    db = mHelper.getWritableDatabase();

    // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。

    mDaoMaster = new DaoMaster(db);

    mDaoSession = mDaoMaster.newSession();

}

public DaoSession getDaoSession() {

    return mDaoSession;

}

public SQLiteDatabase getDb() {

    return db;

}
复制代码

}

6、插入

UserInfoDao userInfoDao = MyApplication.getInstances().getDaoSession().getUserInfoDao();

UserInfo userInfo = new UserInfo();

userInfo.setName("aaaaaaaaa");

userInfoDao.insert(userInfo);

 查询
复制代码

UserInfoDao userInfoDao = MyApplication.getInstances().getDaoSession().getUserInfoDao();

List list = userInfoDao.loadAll();

其他方法请自行查看API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值