使用ORM数据库:greenDao
1. 添加依赖:
// 在总的 build.gradle 中
buildscript {
repositories {
jcenter()
mavenCentral() // 加入仓库
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' // 添加插件
}
}
// 在应用程序的 build.grdle 中
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' //添加应用插件
dependencies {
compile 'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
}
//应用程序的 build.grdle 的 android 中
android{
...
greendao {
schemaVersion 1//数据库版本号
daoPackage 'com.xxx.xxx.greendao'//设置 DaoMaster、DaoSession、Dao 包名
targetGenDir 'src/main/java'//设置 DaoMaster、DaoSession、Dao 目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
}
2. 使用样例:
实体类 User
@Entity//标示是一个greenDao需要生成的类
public class User {
@Id(autoincrement = true)//标示是自增长的id,必须是Long型
private Long id;
private String name;
private int age;
@Transient//表示不会存储此字段
private boolean isCheck;
}
3. 相关注解说明 :
3.1. 实体@Entity 注解
schema:告知 GreenDao 当前实体属于哪个 schema
active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
nameInDb:在数据库中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表
3.2. 基础属性注解
@Id:主键 Long 型,可以通过@Id(autoincrement = true)设置自增长
@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = “name”)
@NotNull:设置数据库表当前列不能为空
@Transient:添加此标记后不会生成数据库表的列
3.3. 索引注解
@Index:使用@Index 作为一个属性来创建一个索引,通过 name 设置索引别名,也可以通过 unique 给索引添加约束
@Unique:向数据库添加了一个唯一的约束
3.4. 关系注解:
@ToOne:定义与另一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
4. 当编写好实体类并添加了注解之后,点击Make Project或者Make Module * ,就会在自己设定的目录下看到生成的类文件,并且
会自动生成各个属性的 get,set 方法
5. 初始化(一般在 Application 中)
DaoMaster.DevOpenHelper openHelper=new DaoMaster.DevOpenHelper(上下文,数据库名字);//也有三个参数的构造,第三个参
数是游标工厂
Database db=openHelper.getWritableDb();
DaoMaster daoMaster=new DaoMaster(db);
ormDao=daoMaster.newSession();//这个 ormDao 就是要用于操作的
6. 增删改查的操作(要 try 一下,如果有异常表示操作失败)
6.1. 增:ormDao.get 实体类名 Dao().insert(对象);//注意,Long 型 id 如果传入 null,则会自增长
6.2. 删: deleteBykey(主键) :根据主键删除一条记录。
delete(对象) :根据实体类删除一条记录,一般结合查询方法,查询出一条记录之后删除。
deleteAll(): 删除所有记录。
6.3. 改:update(对象);//应该是根据主键改的
6.4. 查: loadAll():查询所有记录
load(Long key):根据主键查询一条记录
queryBuilder().list():返回:List 列表
queryBuilder().where(UserDao.Properties.Name.eq(“”)).list():返回:List 列表
queryRaw(String where,String selectionArg):返回:List 列表
6.5. 高级查询:
.orderAsc(类.字段)//按照字段进行正序排序,应该有 desc,倒序
.or()//条件或者,可以加多个条件,中间用逗号隔开
.and()//条件并且,可以加多个条件,中间用逗号隔开
queryBuilder() .offset(0* 20).limit(20).list();//分页查询,现在是查询第 1 页,每页 20 条数据
使用ORM数据库:greenDao相关推荐
- android 连接mysql orm_Android ORM框架 GreenDao 的使用详解
一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储和文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 S ...
- 一篇好文之Android数据库 GreenDao的完全解析
数据库GreenDao.jpg 之前在开发过程中,数据库基本上会使用Litepal或者SQlite自己写,最近换新环境,公司原先使用的数据库就是GreenDao,在各种情况的作用下,准备了解下Gree ...
- Android高性能ORM数据库DBFlow入门
DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点.同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后.基于注解,使用 ...
- Android ORM框架GreenDao用法
Android ORM框架GreenDao用法 0 简介 android 上的ORM框架主要有两个:ormlite 和 GreenDAO,本篇主要介绍GreenDao的用法,原因是GreenDAO的速 ...
- Android ORM框架 GreenDao 的使用详解
一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 ...
- flutter如何访问mysql数据库_手把手教你在Flutter项目优雅的使用ORM数据库
Flutter ORM数据库介绍 Flutter现在开发上最大的槽点可能就是数据库使用了,Flutter现在只提供了sqflite插件,这表明开发者手动写sql代码,建表.建索引.transation ...
- Python-Sqlalchemy(ORM数据库框架)
文章目录 python-Sqlalchemy(ORM数据库框架) 概念和数据类型 安装 连接 创建数据库表类(模型) 生成数据库表 会话 增删改查 增 查 改 删 执行裸sql with关闭会话 sq ...
- ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)...
摘要: Android中对SQLite数据库使用,是一件非常频繁的事情.现今,也有非常多的SQLite处理的开源框架,其中最著名的greenDao,它以占用资源少,处理效率高等特点,成为优秀的ORM框 ...
- Android开源库--ActiveAndroid(active record模式的ORM数据库框架)
Github地址:https://github.com/pardom/ActiveAndroid 前言 我一般在Android开发中,几乎用不到SQLlite,因为一些小数据就直接使用Preferen ...
最新文章
- 保护眼睛设置.txt
- OpenJDK将对Android开发产生怎样的影响?
- 从C#2.0的角度看.NET 2.0类型系统
- Vue.js中的MVVM
- java绘画imo,搞死帮忙看下这个:需要为class interface或enum imort java.ut
- 堆积密度怎么做_seo关键词究竟应该怎么优化
- 本地离线语音识别芯片哪家强
- JAVA循环结构、break、continue、循环嵌套
- javassist组件分享利用javassist动态创建一个类
- 精彩回顾 | Apache Flink Meetup · 北京站(附PPT下载)
- WiFi之协议栈要点
- wamp5虚拟主机的配置
- Be Better:遇见更好的自己-2016年记
- MATLAB阶段性方程组,[转载]matlab 解方程组
- win11连接不了蓝牙耳机的解决办法
- 盒模型和开发中常用的布局
- hyperledger cello 0.9.0 项目部署总结
- anaconda创建虚拟环境并安装tensorflow
- 什么是ASP?教你如何学ASP编程
- 单片机的停车场计数系统c51_基于51单片机控制的自动停车收费管理系统
热门文章
- 文巾解题 994. 腐烂的橘子
- 文巾解题 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
- Edit Distance Python源码及支持包的实现
- No module named Crypto--转
- 支付宝的高可用与容灾架构演进
- tomcat:Could not publish to the server. java.lang.IndexOutOfBoundsException
- 是时候抛弃web.xml了?
- netflix zuul 1.x与zuul2.x之比较
- 求解LambdaMART的疑惑?
- 百度发布机器人助理度秘 “三大基石”炼成