版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21004057/article/details/77676403
有关GreenDao的介绍在文章中就不详细介绍了,简单介绍下它的优点。大家可以去官网看看,点击此处查看Greendao官网。
GreenDao是ORM框架,所谓的ORM就是映射型框架。这里指的是对象Object映射到数据库的一种方法。该框架的优点简洁地说就是,轻巧,快捷,占用内存小,加载快,安全等。好了,咱们开始正式地使用它。
- 第一步:在root下的build.gradle添加greendao插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'//第一步,在root下的build.gradle下添加插件
- 接下来如下图:添加插件及版本
//第二步:在module中添加插件 apply plugin:'org.greenrobot.greendao' //第三步:添加greendao版本 greendao{ schemaVersion 1 targetGenDir 'src/main/java' //第四步:导入框架类库 compile 'org.greenrobot:greendao:3.2.2'
- 导入greendao类库
在配置完了之后创建实体类测试是否配置成功。
我们创建一个Student类。代码如下:
@Entity
public class Student {
@Id(autoincrement = true)
private Long id;
@Property(nameInDb = "NAME")
private String name;//姓名
@Property(nameInDb = "AGE")
private int age;//年龄
@Property(nameInDb = "ADDRESS")
private String address;//地址
}
点击build----->>>make project。看是否自动生成set和get方法。
生成结果如下图,
我们可以看到多出了三个文件,分别是DaoMaster,DaoSession,StudentDao。右侧我们也明显看到了自动生成了新的代码。
接下来,我们写个Activity进行测试。
MainActivity的代码如下:
package com.chenlei.greendao;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ButtonBarLayout;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.chenlei.greendao.Entity.DaoMaster;
import com.chenlei.greendao.Entity.DaoSession;
import com.chenlei.greendao.Entity.Student;
import com.chenlei.greendao.Entity.StudentDao;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "测试";
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button) findViewById(R.id.btn_add_01);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//构建一个对象
Student xiaoming = new Student();
xiaoming.setName("小明");
xiaoming.setAge(16);
xiaoming.setAddress("胜利街");
//创建数据库
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(),"test.db",null);
//得到数据库对象
SQLiteDatabase db=devOpenHelper.getWritableDatabase();
//得到DaoMaster对象
DaoMaster master = new DaoMaster(db);
//通过DaoMaster得到DaoSession对象
DaoSession session = master.newSession();
//通过DaoSession创建一个Dao对象
StudentDao studentDao = session.getStudentDao();
//通过Dao来操作数据库
studentDao.insert(xiaoming);
Log.d(TAG,"此时的id是"+xiaoming.getId());
}
});
}
}
在这里我对上面的步骤的总结为,首先通过D后通过服evOpenHelper对象创建数据库db,然后通过该工具类得到框架服务器DaoMaste对象,然务器DaoMaste对象得到对话状态DaoSession 对象,通过DaoSession来创建新的xxxDao对象。最后即可通过xxxDao来管理数据库进行数据库增删除查操作。
当我们不断点击按钮时候,此时的id的值打印如下图。说明插入对象成功,由于字段没有声明为unique唯一的,所以不断插入同样的对象是可以成功的,不过每个对象的id不同。
Greendao查询数据时候采用queryBuilder来进行查询,然后将查询结果通过list集合展示。
下面是查询名字是小明的所有成员。
List<Student> s = studentDao.queryBuilder().where(StudentDao.Properties.Name.eq("小明")).list();
通过上面代码就得到了所有的名为小明的成员。
在官方文档上表示,在查询时候可以进行排序。分为升序orderAsc和降序descAsc。
下面是实例代码,将对查询到的结果通过orderAsc排序后再利用list集合封装。
List<Student> studentsLs = studentDao.queryBuilder().where(StudentDao.Properties.Name.eq("小明")).orderAsc(StudentDao.Properties.Id).list();