Android ORM之GreenDao3.0 使用外部数据库.db文件总结

ORM定义:
      对象-关系映射(Object/Relation Mapping,简称ORM),是随着 面向对象软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流 数据存储系统.
      对象和关系数据是 业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。
内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以 中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

ORM原理:
        先说ORM的实现原理,其实,要实现JavaBean的属性到数据库表的字段的映射,任何ORM框架不外乎是读某个配置文件把JavaBean的属 性和数据库表的字段自动关联起来,当从数据库Query时,自动把字段的值塞进JavaBean的对应属性里,当做INSERT或UPDATE时,自动把 JavaBean的属性值绑定到SQL语句中。


GreenDao配置:

一、 配置app的Gradle

apply plugin: 'org.greenrobot.greendao'
    greendao {
        schemaVersion 1

        daoPackage 'com.suitong.gajfpd.data.greendao.localdata'//自动生成的dao和master存放路径

        targetGenDir 'src/main/java'
    }
二、配置project的Gradle
dependencies {

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

}
三、编写实体类

// 数据库类型的实体类 nameInDb当前类再数据库中的表名,如果不给该属性则会以类名的自动生成一个表名,表名格式用类名的大小写作为间隔。createInDb 是否创建该表。默认为创建。
@Entity(nameInDb ="inv_cabinet",createInDb = false)

public class Cabinet implements Serializable {
     //Property改属性在数据库中的字段,id需要指定名称 不然会默认成"_id".然后会报no such column的异常。
    @Property(nameInDb = "id")
     //id设置为自动增长
    @Id(autoincrement = true)
     //主键类型一定为大写Long类型
    private Long id;
//如果用到外部db文件,需要注意db文件表的字段类型是否和实体类中的数据类型一致。

四、编译
 当实体类编写完成需要将project重新编译下,会自动生成DaoMaster和DaoSession类 路径就是再app的gradle中的daoPackage,当有实体类有字段和类型进行更改了需要重新编译实体类

GreenDao使用外部DB文件:
一、初始化数据库,一般放在application中,只需要执行一次
  • DaOMaster——数据库是使用由生成DaoMaster类提供的助手类DevOpenHelper创建的。 该类持有数据库对象,并管理DAO classes(是class文件),并包含创建和删除数据表table的方法。它的内部类OpenHelper和DevOpenHelper是SQLite接口SQLiteOpenHelper 的实现,因此该类具有操作数据库的潜质。
  • DaoSession——管理所有的可用DAO 对象, DaoSession提供类似insert, load, update, refresh,delete 的方法。
  • DAOs——全称为Data access objects,对于Entity,都可以通过GreenDao生成DAO。并且该对象提
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值