简单实用的Android ORM框架TigerDB
TigerDB是一个简单的Android ORM
框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构。
该库主要包括如下几个要点:
- 根据实体对象自动建表、新增字段(SQLite不支持删除字段列)
- 支持注解配置表名、字段名、字段默认值、主键是否自增长以及哪些字段不作为数据表中的映射字段
- 直接映射实体对象到SQLite数据库,实现一行代码对SQLite数据库增删改查
- 支持在SDCard中新建数据库db
- 解决在onCreate,onUpgrade中执行数据库其他操作时出现的异常(java.lang.IllegalStateException: getDatabase called recursively)
- 支持原生SQL语句操作数据库
该ORM库使用过程中的主要类说明:
SQLiteDBConfig
:主要用于设置数据库的名字、创建路径、版本号、数据创建更新时的监听SQLiteDB
:创建完数据库之后,主要通过此类来操作数据库的增删改查SQLiteDBFactory
:该类主要用于创建SQLite数据库,同时缓存当前创建的SQLiteDB对象CursorUtil
:查询数据库时,检测游标对象Cursor是否正常,解析Cursor数据为实体对象IDBListener
:数据库创建、升级时的监听类,提供了空实现SimpleDBListenerColumn
:该注解用来设置字段名、字段默认值PrimaryKey
:该注解用来设置主键、主键字段名、以及主键是否为自增长Table
:该注解用来设置表名,不设置的话默认类名为表名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相关推荐
- Android ORM 框架:GreenDao 数据库升级
本文作者:Speedy CSDN 专栏:blog.csdn.net/speedystone 掘金专栏:juejin.im/user/57e082- 前言 在 Android ORM 框架:GreenD ...
- Android ORM框架GreenDao用法
Android ORM框架GreenDao用法 0 简介 android 上的ORM框架主要有两个:ormlite 和 GreenDAO,本篇主要介绍GreenDao的用法,原因是GreenDAO的速 ...
- android ORM框架的性能简单测试(androrm vs ormlite)
2019独角兽企业重金招聘Python工程师标准>>> 前言 看了一下现在的android设备,性能都不差,就懒得直接用sqlite,直接上ORM框架把,上网搜了一圈,觉得andro ...
- android的orm框架有哪些,android orm 框架有哪些
1.Afinal Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp.通过finalAc ...
- Android ORM 框架之 greenDAO 使用心得
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- Orm框架介绍和常见的Android Orm框架
ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中. 先介绍一下ORM的概念,以前也一直听说 ...
- 最受欢迎的5个Android ORM框架
在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...
- Android ORM框架 GreenDao 的使用详解
一.前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 ...
- android动态化ui框架,简单实用的Android UI微博动态点赞效果
说起空间动态.微博的点赞效果,网上也是很泛滥,各种实现与效果一大堆.而详细实现的部分,讲述的也是参差不齐,另一方面估计也有很多大侠也不屑一顾,觉得完全没必要单独开篇来写和讲解吧.毕竟,也就是两个vie ...
- android ORM框架LitePal 封装SQLite
LitePal的基本用法 虽说LitePal宣称是近乎零配置,但也只是"近乎"而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法. ...
最新文章
- 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
- ads1115寄存器操作
- gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式
- easyui 1.4.2 Tab刷新图标重复问题
- 用Python开始机器学习(4:KNN分类算法)
- 比较难发音的英语音标音符_音素_英语发音
- Python学习6 字典基础知识和常用函数
- 使用apache POI把list集合里面的实体写入Excel(java)
- 美国计算机授课型硕士,美国高校一年制硕士项目中,哪些项目最值得推荐?
- blender 可视化编程_使用Blender可视化天体物理学数据
- iptables NAT
- 常量表达式(constexpr)
- 【SQL】实验二 SQL数据查询
- SmartDeblur-图片模糊处理器
- 牛客SQL题解 - 查找employees表
- nRF52840芯片硬件设计解析
- linux压缩zip下载,linux下wget下载文件到指定目录,解压zip文件,解压与压缩总结...
- Proteus —— 电路仿真软件
- 手把手教你如何安装水晶易表——靠谱的安装教程
- Qt【正则表达式】匹配中文汉字,和字母,过滤中英文符号