简单实用的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的更多相关文章
- 最好的5个Android ORM框架
在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...
- Android ORM 框架之 greenDAO 使用心得
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- 推荐的Android ORM框架
1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...
- 最受欢迎的5个Android ORM框架
在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...
- Android ORM 框架之 greenDAO
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- Android orm 框架xUtils简介
数据库操作建议用ORM框架,简单高效.这里推荐xUtils,里面包含DBUtils.github地址:https://github.com/wyouflf/xUtils 获得数据库实例建议用单例模式. ...
- android ORM框架ORMLite封装
源码:http://download.csdn.net/detail/a924571572/9415506 一.框架效率对比 由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为 ...
- android ORM 框架 search
1. ORMLite 特性: 通过在类上添加注解设置类 强大抽象DAO类 QueryBuilder 可以灵活的构造简单和复杂的查询语句 支持MySQL, Postgres, Microsoft SQL ...
随机推荐
- JS tab切换事件
$('ul.main-tab>li').on('mousedown', data, function() { var $this = $(this), $box = $('.main-tab-c ...
- AudioQueue语音流 speex压缩 实时通讯 对讲机
参开 http://blog.csdn.net/liulina603/article/details/19029727 博客有多篇文章 http://blog.csdn.net/liulina6 ...
- cometd的js端代码
一:js端使用方式 CometD JavaScript的配置.整个API可以通过一个单一的原型名为org.cometd.Cometd的对象来调用.Dojo工具包中有一个名称为dojox.cometd的 ...
- javascript树形菜单简单实例
参考博客地址:http://chengyoyo2006.blog.163.com/blog/static/8451734820087843950604/ <!DOCTYPE HTML PUBLI ...
- 在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结
在 Linux 的 KVM虚拟机 上安装 Mac OS 系统的研究总结 一.资料来源: 网上一共找到两个方法,一个是视频上的教程,一个是网页资料. 二.视频资料方法内容:1.install qe ...
- 浏览器关闭使session失效的问题多种解决方式
直接关闭浏览器(或者强制关闭浏览器进程.死机等),服务器无法处理用户退出网站的请求,此举将会导致session失效,下面整理了一些解决方法,感兴趣的朋友可以参考下哈 如果用户不点击网站的“退出”链 ...
- PHP url重定向
1.使用header()函数 PHP的 HTTP相关函数种提供了一个 header()函数,首先要清楚,header()函数必须放在php程序的开头部分,而且之前不能有另外的 header() 函数或 ...
- https 三次握手
1,客户端输入https网址,链接到server443端口: 2,服务器手中有一把钥匙和一个锁头,把锁头传递给客户端.数字证书既是公钥,又是锁头 3,客户端拿到锁头后,生成一个随机数,用锁头把随机数锁 ...
- Http权威指南(一)---读书笔记
Chart1 ====概述==== 最简单的的资源是web服务器文件系统中的静态文件.当然可以上动态,但要经过网关?(不确定) 下面见图: 2. URI(uniform Resource Ident ...
- 从数学角度看最大期望(EM)算法 I
[转载请注明出处]http://www.cnblogs.com/mashiqi 2014/11/18 更新.发现以前的公式(2)里有错误,现已改过来.由于这几天和Can讨论了EM算法,回头看我以前写的 ...