GreenDao 简介
GreenDao是一个将对象映射到SQLite数据库中的轻量级且快速的ORM解决方案.
优点:
1. 一个精简的库
2. 性能最大化
3. 内存开销最小化
4. 易于使用的APIs
5. 对Android进行高度优化
GreenDAO 缺点:
1. 配置步骤繁多
2. 学习成本高
3. 封装没有ORMLite完善
GreenDAO 的配置: 本文背景色为黄色的代码是添加项不是所有代码都需要添加 本文是用Android Studio工具
1. 在Project的gradle文件builscript标签中的dependencies标签中配置
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
2. 在Module的gradle文件中顶部配置
apply plugin: ‘org.greenrobot.greendao’
3. 在Module的gradle 文件的android标签中配置
greendao{
schemaVersion 1 //数据库版本
daoPackage '一般为Module的主包名.dao' //数据库相关操作类生成位置
targetGenDir 'src/main/java' //默认就行 代码存放位置
}
4. 在Module 的gradle文件中的dependencies标签中关联项目依赖
compile'org.greenrobot:greendao:3.2.2'
GreenDao 注解表:
@注解名 翻译 作用
@Convert 转变 未知
@Entity 实体 声明类名为表名
@Generated 发电的 未知
@Id id 声明id
@Index 索引 未知
@JoinEntity加入实体 未知
@JoinProperty加入属性 未知
@Keep 人名 未知
@NotNull 非空 声明字段不能为空
@OrderBy 整齐的 未知
@Property 属性 声明属性
@ToMany 未知 未知
@ToOne 未知 未知
@Transient 短暂的 声明字段不在数据库生成
@Unique 唯一的 声明唯一
@Entity(nameInDb = "student") //设置表名
@Id(autoincrement = true) //设置Id,id必须为Long类型,autoincrement设置id自增长
@Unique //唯一约束注意不能重复插入
@NotNull //不能为空
@Property(nameInDb = "变量名") //设置对应表中的字段名称
@Property(nameInDb = "变量名") //nameInDb字段声明
@Transient //不生成对应表中的字段
声明好字段MakeProject当前的Module第一次使用GreenDao会出现提示框点击颜色突出的
生成对应的类
创建 DaoMaster.DevOpenHelper helper = DaoMaster.DevOpenHelper(上下文引用,数据库名);
创建 DaoMaster master = new DaoMaster(helper.getWritableDatabase());//传入数据库
获取session对象 DaoSession daoSession = master.newSession();
获取实体bean的Dao对象 daoSession.get+实体bean类的名子拼接+ Dao();
实例代码:
@Entity(nameInDb ="表名")//注意这里是表名不需要加.db
public class Demo{
@Id(autoincrement=true)//注意注解不需要分号结束
public Long id;
@Property(nameInDb="name")
public String name;
}
确保实体类写的没问题
在Android Studio上方的工具条中找到Build-->Make Project或 Ctrl+F9
会生成DaoMaster DaoSession DemoDao三个类
创建 DaoMaster.DevOpenHelper helper = DaoMaster.DevOpenHelper(上下文引用,数据库名);
创建 DaoMaster master = new DaoMaster(helper.getWritableDatabase());//传入数据库
获取session对象 DaoSession daoSession = master.newSession();
获取实体bean的Dao对象 DemoDao demodao= daoSession.getDemoDao();
demodao.insert()//插入的方法
demodao.update()//修改的方法
demodao.queryBuilder().list() //查询所有的方法
demodao.delete()//删除的方法
增删改都需要在对应方法在放入Demo的对象