Android GreenDao的基本使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangliniqng/article/details/84645961

前言

Android 本地数据库有很多,Sqlite、Dbutils、LitePa、GreenDao等,其他的几个数据库框架都用过了,GreenDao还未在项目中用过,所以在这里记录下GreenDao的基本使用。

一、添加GreenDao支持

 1.1 在项目根目录下的build.gradle下的代码添加下列代码:

1.2 在module下build.gradle(这里是app下的build.gradle)中添加下列代码:

compile 'org.greenrobot:greendao:3.2.2'

并且在最上面添加

apply plugin: 'org.greenrobot.greendao' //新加的

1.3 在module下build.gradle android中配置greendao的信息

greendao {
    schemaVersion 1 //数据库版本号
    daoPackage 'hlq.com.greendao.db'// 设置DaoMaster、DaoSession、Dao 包名
    targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录  基本上都是这个
}

我的目录如下:

二、创建数据库对应的实体类,以用户信息为例

2.1 新建一个User实体类,里面有id,name、pass、sex、age五个字段,如图所示:

这是一个普通的实体类,我们通过注解,可以让后续声称对应的表。

@Entity

表明这个实体类会在数据库中生成一个与之相对应的表

@Id

对应数据表中的 Id 字段

其他更多注解可以参考greendao官方网站:http://greenrobot.org/greendao/

添加完注解之后变成如下图所示:

如果我们想让id自增(一般id字段都自增),我们可以改为:

ps:这里的坑要注意,如果id自增的话,必须必须定义id类型为大写的Long,小写的会报错。

然后,生成对应的setter、getter和构造方法。

2.2 点击 Make Project(或者 Make Moudle ‘App’) 编译工程,会自动在配置的目录下生成daoseesion等。生成如图所示:

2.3 初始化 GreenDao,一般都在application中完成初始化操作(这里为了演示直接写在Activity中)

初始化操作主要就是获取dao,代码如下:

DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"user,db");
SQLiteDatabase sqLiteDatabase = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(sqLiteDatabase);
DaoSession daoSession = daoMaster.newSession();
UserDao userDao = daoSession.getUserDao();

三、数据库操作

3.1 插入操作

User user = new User("黄林晴","123456","男",22);
userDao.insert(user);

3.2 查询所有操作返回时实体类对应的List集合

userDao.loadAll();

为了验证3.1插入操作,我们打印出查询结果如下:

3.2 接下来我们再插入一条数据,再次打印如下:

打印出三条因为我们已经运行过一次了。

3.3 条件查询,以按姓名查找为例:

List<User> users = userDao.queryBuilder().where(UserDao.Properties.UserName.eq("Huanglinqing")).build().list();

打印结果如下:

我们看到只打印出来姓名为Huanglinqing的数据。

3.4 删除

 userDao.deleteAll()

后续:其他操作就不一一演示了,需要的时候到官方网站去查询API就行了。

欢迎关注技术公众号,微信号搜索ColorfulCode 代码男人

分享技术文章,投稿分享,不限技术种类,不限技术深度,让更多人因为分享而受益。

猜你喜欢

转载自blog.csdn.net/huangliniqng/article/details/84645961