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. 最好的5个Android ORM框架

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

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

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

  3. 推荐的Android ORM框架

    1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...

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

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

  5. Android ORM 框架之 greenDAO

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

  6. LogCook 一个简单实用的Android日志管理工具

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  7. Android orm 框架xUtils简介

    数据库操作建议用ORM框架,简单高效.这里推荐xUtils,里面包含DBUtils.github地址:https://github.com/wyouflf/xUtils 获得数据库实例建议用单例模式. ...

  8. android ORM框架ORMLite封装

    源码:http://download.csdn.net/detail/a924571572/9415506 一.框架效率对比 由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为 ...

  9. android ORM 框架 search

    1. ORMLite 特性: 通过在类上添加注解设置类 强大抽象DAO类 QueryBuilder 可以灵活的构造简单和复杂的查询语句 支持MySQL, Postgres, Microsoft SQL ...

随机推荐

  1. EF学习笔记(一)

    EF(EntityFramwork)实体框架:主要是将实体类(EntityClass)和数据表(Table)进行映射(Map). EF核心对象: DbContext   (数据访问核心对象)      ...

  2. (转)Position定位:relative | absolute

    原文:http://hi.baidu.com/zxc0420/item/9ada5110845ba1e89c778a08 Position定位:relative | absolute 定位一直是WEB ...

  3. hdu 2056

    ps:    - -惭愧...是套用一个大神的计算方法来做的.....下面是代码 代码: #include "stdio.h"#include "stdlib.h&quo ...

  4. php大力力 [033节] 随便看看:PHP程序员学习C++

    php大力力 [033节] 随便看看:PHP程序员学习C++ 2014 兄弟连高洛峰 PHP教程14.1.7 在PHP脚本中操作MySQL数据库4 观看 - 56.com http://www.med ...

  5. C语言数据类型在IA32中的大小

    这个主要是一些常识问题,以及在使用AT&T语法汇编时会使用的编码后缀: C声明 Intel数据类型 汇编后缀 大小(byte) char 字节  b  1 short 字  w  2 int ...

  6. C#指针操作Marshal实例

    static void Main(string[] args) { ,,,}; ,,,}; IntPtr pt = Marshal.AllocHGlobal(a.Length); //从source数 ...

  7. 重学STM32----(一)

    在这学习stm32半年的时间中,虽然明显的感觉到自己在进步,但是还是发现学习方法的错误.由于急功近利的性格,在学习stm32之初,我选择了最简单的办法,用库函数来写程序,而且也由于我这急功近利的性格, ...

  8. nginx源码学习资源(不断更新)

    nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没 ...

  9. QQ截图取色方法

    转自:http://www.oicqzone.com/qqjiqiao/2014110920194.html ctrl+alt+a截图的时候,会显示RGB值.是的,你也许会想,但是我要的是#RRGGB ...

  10. Debian下安装Firefox与flash简介

    Debian下安装Firefox与flash简介 由于Debian在Firefox的版权上出现了问题,导致官方发布的Debian系统不能使用默认的Firefox浏览器,最后官方重编的Firefox改名 ...