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。并且该对象提