Android数据库框架GreenDao使用详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();



猜你喜欢

转载自blog.csdn.net/qq_21004057/article/details/77676403