Android Studio 配置使用GreenDao3.0

时间:2022-07-27 19:46:55

什么是GreenDao?

  • GreenDao是一款开源的数据库框架,使用它可以方便高效地操作SQLite Database

GreenDao有什么优势?

  • 最高性能(可能是Android最快的ORM); 我们的基准也是开源的
  • 易于使用的功能强大的API涵盖关系和联接
  • 最小的内存消耗
  • Library占用极小(<100KB),以保持您的建立时间较低,并避免65k方法限制
  • 数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
  • 更多详情请察看GreenDao的官网 —— [ greenDAO ]

在Android Stuidio上快速配置GreenDao

  • 首先导入GreenDao 依赖包,在project视图的app下的gradle里添加如下:
    dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
//wesker add GreenDao start
compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'
//wesker add GreenDao end
testCompile 'junit:junit:4.12'
}

Android Studio 配置使用GreenDao3.0

  • 生成GreenDao所依赖的插件,需要去maven仓库下载这个插件。在project视图的app下的gradle里添加
//wesker add GreenDao start
apply plugin: 'org.greenrobot.greendao'

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
}
}
greendao {
schemaVersion 1
daoPackage 'com.greendaodemo.gen'//1
targetGenDir 'src/main/java'
}
//wekser add GreenDao end

Android Studio 配置使用GreenDao3.0

名称 含义
schemaVersion 数据库schema版本号,迁移等操作会用到
daoPackage 通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名
targetGenDir 自定义生成数据库文件的目录

- 最后还要配置最后一步,在project下的gradle里配置

        classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

这一步不配置的话可能会报Error:Execution failed for task ‘:app:greendao’.这个错误

Android Studio 配置使用GreenDao3.0
- 到此GreenDao配置完成,接下来我们来看看怎么使用它吧。

使用GreenDao

  • 编写一个User实体类

Android Studio 配置使用GreenDao3.0

  • 执行 Build->Make Project。GreenDao会自动帮你生成get和set方法。并且生成如下文件

Android Studio 配置使用GreenDao3.0

@Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String username;
@Transient
private int temp;
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public void setId(Long id) {
this.id = id;
}
@Generated(hash = 79420138)
public User(Long id, String username) {
this.id = id;
this.username = username;
}
@Generated(hash = 586692638)
public User() {
}


}

开始增删改查操作

  • 首先开始初始化数据库
        //创建一个数据库,名字为"wesker"
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(ApplicationContextHodler.getContext(), "wesker", null);
//一个DaoMaster就代表着一个数据库的连接;
DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
// DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,
// DaoSession可以创建多个,每一个都是属于同一个数据库连接的
DaoSession mDaoSession = mDaoMaster.newSession();
UserDao mUserDao = daoSession.getUserDao();
  • Insert
private void insert(){
User mUser = new User(null,username);//如果id为null,那么数据库会为其分配自增长id
mUserDao.insert(mUser);
Toast.makeText(this, "成功插入", Toast.LENGTH_SHORT).show();
}
  • Delete
private void delete(){
User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("update_wesker")).build().unique();
if(findUser != null){
mUserDao.deleteByKey(findUser.getId());
}
}

-Update

private void update(){
User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("insert_wesker")).build().unique();
if(findUser != null) {
findUser.setUsername("update_wesker");
mUserDao.update(findUser);
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();
}
}

-Query

private void query(){
List<User> userList = mUserDao.queryBuilder()
.where(UserDao.Properties.Id.notEq(1))
.limit(10)
.build().list();
StringBuilder s = new StringBuilder();
for(User user:userList){
s.append("userId:"+user.getId()+"username:"+user.getUsername());
s.append('\n');
}
display.setText(s);
}

-自定义查询

private void customSql(){
Cursor cursor = mUserDao.getDatabase().rawQuery("select * from wesker", null);
while (cursor.moveToNext()) {
int chatCount = cursor.getInt(0);
String username= cursor.getString(1);
}
}

GreenDao基本配置使用到这就结束啦,第一次写文章如有不足之处还望见谅并请提出,共勉。