最简单的GreenDao 的用法

已经有好长一段时间没有发博客了,时隔这么长时间时候发一篇简单的博客了,这里讲解的是一个框架的使用,GreenDao 的使用,

  • GreenDao:使用code generation,效率很高;库文件较小(约87KB),占用更少内存, 缺点是学习成本较高,需要弄清楚其原理才能方便使用

  • 工作原理

  • GreenDao向SQLite数据库提供了一个对象导向的接口,它为用户省下了很多重复的工作,而且提供了简便的操作接口。
    为了使用GreenDao,需要在新建一个Java工程(工程中需要导入greendao-generator-x.x.x.jar,freemarker-x.x.xx.jar),根据GreenDao的规则在其中描述数据库的表结构,运行之后它会构建你的实体模型和DAO工具类。

DaoMaster:

  • 持有数据库对象(SQLiteDatabase) ,并管理一些DAO类(不是对象)
    能够创建和删除数据库表
  • 它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现类,用于创建SQLite数据库的模式

DaoSession:

  • 管理制定模式下所有可用的DAO对象
  • 能对实体进行插入、加载、更新、刷新、删除操作。

DAO:

  • 每个实体都有一个DAO,相对于DaoSession,它有更多的方法,比如:加载全部、InsertTx

Entity

  • 可持久化的对象,由Make Project(小锤子)生成。相当于数据库中的一张表,所有字段都是使用标准的Java对象的属性
  • 通过Make Project(小锤子)生成的这些工具类,你就可以在自己的Android工程中对进行数据库操作,完全不需要写任何SQL语句。

具体操作

1.导依赖
在项目中的build.gradle导入

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'

在module 中的build.gradle导入

apply plugin: 'org.greenrobot.greendao'


greendao {
        schemaVersion 1//数据库版本号
        daoPackage 'XXX(自己的包名)XXX'//设置DaoMaster、DaoSession、Dao包名
        targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
    }

implementation 'org.greenrobot:greendao:3.2.2'

2.在清单文件中添加权限

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

3.创建一个Bean类

@Entity
public class Student {

//这是主键自增
    @Id(autoincrement = true)
    private Long id;

    private String name;

    private String sex;
    
    }

通过Make Project 创建出三个类

在MyBean对象中创建出一个构造方法

  1. 新建一个application 用来配置数据库
private static DaoSession session;

    @Override
    public void onCreate() {
        super.onCreate();
//        第一步创建openhelper
        DaoMaster.DevOpenHelper openHelper =new DaoMaster.DevOpenHelper(this,"adai.db");
//        开启一个可写的数据库
        SQLiteDatabase writableDatabase = openHelper.getWritableDatabase();
//        通过DaoMaster 封装
        DaoMaster master =new DaoMaster(writableDatabase);
        session = master.newSession();
    }

    public static DaoSession daoSession(){
        return session;
    }
  1. 在使用的activity中得到创建好的GreenDao
MyBeanDao dao = MyApp.daoSession().getMyBeanDao();

6.开始操作

long insert = dao.insert(new MyBean("阿呆", "哈哈", "男"));
                if (insert>0){
                    Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
                }

//                这里用的是通过id 删除
                dao.deleteByKey(1l);

//                这里用的是先查然后再改
                MyBean load = dao.load(1l);
                load.setName("haha");
                load.setSex("男");
                load.setTitle("尖子生");
                dao.update(load);

List<MyBean> list = dao.loadAll();
                for (MyBean myBean : list) {
                    Log.e("GreenDao中的数据",myBean.toString());
                }

猜你喜欢

转载自blog.csdn.net/weixin_43564787/article/details/85331308
今日推荐