Android数据库框架GreenDao使用详解

来源:互联网 发布:阿里云cdn审核 编辑:程序博客网 时间:2024/05/16 19:39

有关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类。代码如下:
@Entitypublic 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();



原创粉丝点击