ActiveAndroid--Android轻量级ORM框架
来源:互联网 发布:郭靖 知乎 编辑:程序博客网 时间:2024/06/10 11:26
目录[-]
源博客链接:http://linkyan.com/2013/05/about-activeandroid/
Github:ActiveAndroid
ActiveAndroid算是一个轻量级的ORM框架,简单地通过如save()和delete()等方法来做到增删改查等操作。配置起来也还算简单。
下面是作者的原话:
ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to save and retrieve SQLite database records without ever writing a single SQL statement. Each database record is wrapped neatly into a class with methods like save() and delete().
ActiveAndroid does so much more than this though. Accessing the database is a hassle, to say the least, in Android. ActiveAndroid takes care of all the setup and messy stuff, and all with just a few simple steps of configuration.
开始
在AndroidManifest.xml中我们需要添加这两个
AA_DB_NAME
(这个name不能改,但是是可选的,如果不写的话 是默认的"Application.db"这个值)AA_DB_VERSION
(optional – defaults to 1)1
...
2
<meta-data android:name=
"AA_DB_NAME"
android:value=
"your.db"
/>
3
<meta-data android:name=
"AA_DB_VERSION"
android:value=
"5"
/>
这个<application>
是必须指定的,但你也可以使用自己的Application,继承自com.activeandroid.app.Application
1
public
class
MyApplication
extends
com.activeandroid.app.Application { ...
如果你不想或者不能继承com.activeandroid.app.Application
的话,那么就这样
01
public
class
MyApplication
extends
SomeLibraryApplication {
02
@Override
03
public
void
onCreate() {
04
super
.onCreate();
05
ActiveAndroid.initialize(
this
);
06
}
07
@Override
08
public
void
onTerminate() {
09
super
.onTerminate();
10
ActiveAndroid.dispose();
11
}
12
}
ActiveAndroid.initialize(this);
做初始化工作,ActiveAndroid.dispose();
做清理工作
创建数据库模型
我们使用@Table(name = "Items")
来表示表,使用@Column(name = "Name")
来表示列,ActiveAndroid会使用自增长的ID作为主键,然后按照注解描述,将类对应映射为数据库表。
01
@Table
(name =
"Items"
)
02
public
class
Item
extends
Model {
03
@Column
(name =
"Name"
)
04
public
String name;
05
@Column
(name =
"Category"
)
06
public
Category category;
07
public
Item(){
08
super
();
09
}
10
public
Item(String name, Category category){
11
super
();
12
this
.name = name;
13
this
.category = category;
14
}
15
}
依赖关系的数据库表
假如Item和Category是多对一的关系,那么我们可以这样子创建他们的类
01
@Table
(name =
"Items"
)
02
public
class
Item
extends
Model {
03
@Column
(name =
"Name"
)
04
public
String name;
05
@Column
(name =
"Category"
)
06
public
Category category;
07
}
08
09
<!-- lang: java -->
10
@Table
(name =
"Categories"
)
11
public
class
Category
extends
Model {
12
@Column
(name =
"Name"
)
13
public
String name;
14
public
List<Item> items() {
15
return
getMany(Item.
class
,
"Category"
);
16
}
17
}
如何保存和更新数据到数据库
单挑插入
保存Category对象
1
Category restaurants =
new
Category();
2
restaurants.name =
"Restaurants"
;
3
restaurants.save();
分配了一个category并且保存到数据库
1
Item item =
new
Item();
2
item.category = restaurants;
3
item.name =
"Outback Steakhouse"
;
4
item.save();
批量插入
如果你要批量插入数据,最好使用事务(transaction)。
01
ActiveAndroid.beginTransaction();
02
try
{
03
for
(
int
i =
0
; i <
100
; i++) {
04
Item item =
new
Item();
05
item.name =
"Example "
+ i;
06
item.save();
07
}
08
ActiveAndroid.setTransactionSuccessful();
09
}
10
finally
{
11
ActiveAndroid.endTransaction();
12
}
使用事务的话只用了 40ms,不然的话需要4秒。
删除记录
我们有三种方式删除一条记录
1
Item item = Item.load(Item.
class
,
1
);
2
item.delete();
3
4
5
<!-- lang: java -->
6
Item.delete(Item.
class
,
1
);
7
8
<!-- lang: java -->
9
new
Delete().from(Item.
class
).where(
"Id = ?"
,
1
).execute();
很简单吧
查询数据库
作者将查询做的非常像SQLite的原生查询语句,几乎涵盖了所有的指令
com.activeandroid.query包下有以下类
- Delete
- From
- Join
- Select
- Set
- Update
我们举例说明吧
1
public
static
Item getRandom(Category category) {
2
return
new
Select()
3
.from(Item.
class
)
4
.where(
"Category = ?"
, category.getId())
5
.orderBy(
"RANDOM()"
)
6
.executeSingle();
7
}
对应的sqlite查询语句就是 select * from Item where Category = ? order by RANDOM()
当然还支持其他非常多的指令
- limit
- offset
- as
- desc/asc
- inner/outer/cross join
- group by
- having
等等
大家可以在ActiveAndroid项目下的tests工程找到测试用例,有非常多详细的描述。
- ActiveAndroid--Android轻量级ORM框架
- ActiveAndroid--Android轻量级ORM框架
- ActiveAndroid--Android轻量级ORM框架
- ORM轻量级框架---ActiveAndroid
- ORM轻量级框架---ActiveAndroid
- Android:轻量级ORM框架ActiveAndroid入门教程(转)
- Android轻量级ORM框架ActiveAndroid入门教程
- Android轻量级ORM框架ActiveAndroid入门教程
- Android中ORM数据库轻量级框架---ActiveAndroid
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- Android轻量级ORM框架ActiveAndroid入门教程
- Android轻量级ORM框架ActiveAndroid入门教程 - OPEN 开发经验库
- Android ORM 框架ActiveAndroid
- Android ORM 框架之 ActiveAndroid
- android orm 框架 ActiveAndroid 使用
- python操作redis简单例子
- Ajax工作原理
- 字符串的排列 C++实现
- linux内存清理
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个文件
- ActiveAndroid--Android轻量级ORM框架
- 九度 题目1550:分糖果
- 最小生成树—— Prim算法 ▪ Kruskal算法C语言实现
- Activity堆栈管理详解
- 在C语言中调用lua实现的回调函数
- memcpy()函数用法
- 英语学习--chap2 名词短语 冠词
- Bootstrap3.0学习第二轮:栅格系统原理
- java jdbc操作oracle数据库的两种方式