TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构。

该库主要包括如下几个要点:

  1. 根据实体对象自动建表、新增字段(SQLite不支持删除字段列)
  2. 支持注解配置表名、字段名、字段默认值、主键是否自增长以及哪些字段不作为数据表中的映射字段
  3. 直接映射实体对象到SQLite数据库,实现一行代码对SQLite数据库增删改查
  4. 支持在SDCard中新建数据库db
  5. 解决在onCreate,onUpgrade中执行数据库其他操作时出现的异常(java.lang.IllegalStateException: getDatabase called recursively)
  6. 支持原生SQL语句操作数据库

该ORM库使用过程中的主要类说明:

  1. SQLiteDBConfig:主要用于设置数据库的名字、创建路径、版本号、数据创建更新时的监听
  2. SQLiteDB:创建完数据库之后,主要通过此类来操作数据库的增删改查
  3. SQLiteDBFactory:该类主要用于创建SQLite数据库,同时缓存当前创建的SQLiteDB对象
  4. CursorUtil:查询数据库时,检测游标对象Cursor是否正常,解析Cursor数据为实体对象
  5. IDBListener:数据库创建、升级时的监听类,提供了空实现SimpleDBListener
  6. Column:该注解用来设置字段名、字段默认值
  7. PrimaryKey:该注解用来设置主键、主键字段名、以及主键是否为自增长
  8. Table:该注解用来设置表名,不设置的话默认类名为表名
  9. NotDBColumn:该注解用来设置哪些实体属性不映射到数据表中

主要用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//新建实体,可以通过注解@Table设置表名,如果不设置默认以类名User作为表名
public class User {
//设置主键id为自增长,也可以通过注解@Column设置字段名或字段默认值
@PrimaryKey(isAutoGenerate=true)
private long id;
private String name;
//设置age字段默认值为1
@Column(defaultValue="1")
private int age;
//该字段不作为数据表中的字段
@NotDBColumn
private String bz;
//必须实现无参构造
public User() {
}
public User(String name) {
super();
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "{id=" + id + ",name=" + name + "}";
}
}
//SQLite相关配置,包括数据库名字、创建路径、版本号、数据创建和升级时的监听
SQLiteDBConfig config = new SQLiteDBConfig(this);
//设置数据库创建更新时的监听,有提供空实现:SimpleDBListener
config.setDbListener(new IDBListener() {
@Override
public void onUpgradeHandler(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public void onDbCreateHandler(SQLiteDatabase db) {
showLongToast("数据库创建成功");
}
});
//创建db,在创建数据库的时候,不需要在onDbCreateHandler手动去创建相关的数据表,在对实体对象进行数据操作的时候,会自动判断表是否存在,不存在的话会自动创建,同时如果有新增的字段也会自动更新表结构
SQLiteDB db = SQLiteDBFactory.createSQLiteDB(config);
//保存单个实体对象
User user = new User("添加单个对象");
int rtn = db.save(user)
//保存集合对象
List list = new ArrayList();
int rtn = db.save(list)
//查询User表中的所有数据
List list = db.queryAll(User.class);
//根据实体id(主键)查询User
User user = db.query(User.class, "1");
//查询User表中的数据总数
long total = db.queryTotal(User.class);
//删除指定实体对象
db.delete(user);
//更新实体对象
db.update(user);
//分页查询
db.queryPage(claxx, curPage, pageSize);
//根据SQL查询
Cursor cursor = db.query(sql, bindArgs);

源码及Demo地址:https://github.com/huyongli/TigerDB,大家可以自行下载查看

简单实用的Android ORM框架TigerDB相关推荐

  1. Android ORM 框架:GreenDao 数据库升级

    本文作者:Speedy CSDN 专栏:blog.csdn.net/speedystone 掘金专栏:juejin.im/user/57e082- 前言 在 Android ORM 框架:GreenD ...

  2. Android ORM框架GreenDao用法

    Android ORM框架GreenDao用法 0 简介 android 上的ORM框架主要有两个:ormlite 和 GreenDAO,本篇主要介绍GreenDao的用法,原因是GreenDAO的速 ...

  3. android ORM框架的性能简单测试(androrm vs ormlite)

    2019独角兽企业重金招聘Python工程师标准>>> 前言 看了一下现在的android设备,性能都不差,就懒得直接用sqlite,直接上ORM框架把,上网搜了一圈,觉得andro ...

  4. android的orm框架有哪些,android orm 框架有哪些

    1.Afinal Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp.通过finalAc ...

  5. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  6. Orm框架介绍和常见的Android Orm框架

    ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中. 先介绍一下ORM的概念,以前也一直听说 ...

  7. 最受欢迎的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

  8. Android ORM框架 GreenDao 的使用详解

    一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 ...

  9. android动态化ui框架,简单实用的Android UI微博动态点赞效果

    说起空间动态.微博的点赞效果,网上也是很泛滥,各种实现与效果一大堆.而详细实现的部分,讲述的也是参差不齐,另一方面估计也有很多大侠也不屑一顾,觉得完全没必要单独开篇来写和讲解吧.毕竟,也就是两个vie ...

  10. android ORM框架LitePal 封装SQLite

    LitePal的基本用法 虽说LitePal宣称是近乎零配置,但也只是"近乎"而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法. ...

最新文章

  1. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
  2. ads1115寄存器操作
  3. gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式
  4. easyui 1.4.2 Tab刷新图标重复问题
  5. 用Python开始机器学习(4:KNN分类算法)
  6. 比较难发音的英语音标音符_音素_英语发音
  7. Python学习6 字典基础知识和常用函数
  8. 使用apache POI把list集合里面的实体写入Excel(java)
  9. 美国计算机授课型硕士,美国高校一年制硕士项目中,哪些项目最值得推荐?
  10. blender 可视化编程_使用Blender可视化天体物理学数据
  11. iptables NAT
  12. 常量表达式(constexpr)
  13. 【SQL】实验二 SQL数据查询
  14. SmartDeblur-图片模糊处理器
  15. 牛客SQL题解 - 查找employees表
  16. nRF52840芯片硬件设计解析
  17. linux压缩zip下载,linux下wget下载文件到指定目录,解压zip文件,解压与压缩总结...
  18. Proteus —— 电路仿真软件
  19. 手把手教你如何安装水晶易表——靠谱的安装教程
  20. Qt【正则表达式】匹配中文汉字,和字母,过滤中英文符号

热门文章

  1. 分块存储视图状态数据
  2. numpy线性代数基础 - Python和MATLAB矩阵处理的不同
  3. 《高翔视觉slam十四讲》学习笔记 第四讲 李群与李代数
  4. c语言中十进制与十六进制转换_二进制、八进制、十进制、十六进制数据转换...
  5. React antD 使用Select 进阶功能 远程搜索,防抖控制,加载状态
  6. Android 实现RecyclerView长按弹出Menu 点击删除
  7. Android 隐藏ImageView
  8. react setState修改嵌套对象
  9. unity中遍历Transform的子物体
  10. 《JS高级程序设计》之三