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。