开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10075|回复: 0
收起左侧

[android教程] GreenDao 3.2.0 的基本使用,android greendao使用

[复制链接]
结帖率:0% (0/1)
发表于 2018-10-17 20:24:53 | 显示全部楼层 |阅读模式   湖北省宜昌市

   前言

        android开发中我们或多或少都会接触到数据库。android中提供了一个占用内存极小的关系型数据库-sqlite。虽然android系统中提供了许多操作sqlite的api,但是我们还是需要手动去编写sql语句,这经常会出现一些莫名其妙的问题(


        官网上的介绍,greendao 是一个将对象映射到 sqlite 数据库中的轻量且快速的 orm 解决方案。(greendao is a light & fast orm solution that maps objects to sqlite databases.)

        greendao特点



  

    1. 性能最大化,可能是android平台上最快的orm框架


  

    2. 易于使用的api


  

    3. 最小的内存开销


  

    4. 依赖体积小


  

    5. 支持数据库加密


  

    6. 强大的社区支持

        greendao有如此多的有点,我们还有什么理由不去使用它呢。

        greendao配置

        在build.gradle(module:app)中添加下面代码:

[Java] [color=rgb(51, 102, 153) !important]查看源文件 [color=rgb(51, 102, 153) !important]复制代码
[color=rgb(160, 160, 160) !important]
[color=#a0a0a0 !important]?

01

02

03

04

05

06

07

08

09

10

11

12

buildscript {
  repositories {
    mavencentral()
  }
  dependencies {
    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
  }
}
apply plugin: 'org.greenrobot.greendao'
dependencies {
   compile 'org.greenrobot:greendao:3.2.0'
}




        其他配置

        在build.gradle(module:app)中添加:

[Java] [color=rgb(51, 102, 153) !important]查看源文件 [color=rgb(51, 102, 153) !important]复制代码
[color=rgb(160, 160, 160) !important]
[color=#a0a0a0 !important]?

1

2

3

4

5

6

7

greendao {
  schemaversion 1//数据库版本号
  daopackage 'com.com.sky.downloader.greendao'//设置daomaster、daosession、dao包名
  targetgendir 'src/main/java'//设置daomaster、daosession、dao目录
  //targetgendirtest:设置生成单元测试目录
  //generatetests:设置自动生成单元测试用例
}




        


        上述配置是可选项,如果不配置,则默认生成在build下:

        


        greendao的基本配置就已经完成了,下面我们编写一个实体类。

        实体类user

[Java] [color=rgb(51, 102, 153) !important]查看源文件 [color=rgb(51, 102, 153) !important]复制代码
[color=rgb(160, 160, 160) !important]
[color=#a0a0a0 !important]?

1

2

3

4

5

6

7

@entity
public class user {
  @id(autoincrement = true)
  private long id;
  private string name;
  private int age;
}




        相关注解说明:

        实体@entity注解

        schema:告知greendao当前实体属于哪个schema

        active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法

        nameindb:在数据库中使用的别名,默认使用的是实体的类名

        indexes:定义索引,可以跨越多个列

        createindb:标记创建数据库表

        基础属性注解

        @id:主键 long 型,可以通过@id(autoincrement = true)设置自增长

        @property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@property(nameindb = "name")

        @notnull:设置数据库表当前列不能为空

        @transient:添加此标记后不会生成数据库表的列

        索引注解

        @index:使用@index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

        @unique:向数据库添加了一个唯一的约束

        关系注解

        @toone:定义与另一个实体(一个实体对象)的关系

        @tomany:定义与多个实体对象的关系

        当我们编写好实体类并添加自己需要的注解之后,点击make project或者make module 'app',就会项目的build目录下或者自己设定的目录下看到生成的三个类文件:



  

    1. daomaster


  

    2. daosession


  

    3. userdao

        后面的数据库操作需要借助这三个类来进行,同时在我们的实体类中自动生成了各个属性的get、set方法。

        


        初始化greendao

        一般建议在application中初始化数据库

        


        devopenhelper有两个重载方法:



  

    1. devopenhelper(context context,string name)


  

    2. devopenhelper(context context,string name,cursorfactory factory)

        context上下文这个不用多说,name数据库的名字,cursorfactory游标工厂,一般不用,传入null或者使用两个参数的方法即可。我们对外提供一个getdaosession()的方法供外部使用。

        增

        注意:long型id,如果传入null,则greendao会默认设置自增长的值。



  

    1. insert(user entity):插入一条记录

        


        删



  

    1. deletebykey(long key) :根据主键删除一条记录。


  

    2. delete(user entity) :根据实体类删除一条记录,一般结合cha询方法,cha询出一条记录之后删除。


  

    3. deleteall(): 删除所有记录。

        


        改

        update(user entity):更新一条记录

        


        查



  

    1. loadall():cha询所有记录


  

    2. load(long key):根据主键cha询一条记录


  

    3. querybuilder().list():返回:list


  

    4. querybuilder().where(userdao.properties.name.eq("")).list():返回:list


  

    5. queryraw(string where,string selectionarg):返回:list

        总结

        至此,greendao的基本使用方法就这些了,后面还有一些关于数据的升级等问题,后面再具体介绍。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表