ctiveAndroid算是一个轻量级的ORM框架,简单地通过如save()和delete()等方法来做到增删改查等操作。配置起来也还算简单。

开始

在AndroidManifest.xml中我们需要添加这两个

  • AA_DB_NAME(这个name不能改,但是是可选的,如果不写的话 是默认的"Application.db"这个值)

  • AA_DB_VERSION(optional �C defaults to 1)

    <meta-data

    android:name="AA_DB_NAME"

    android:value="your.db" />

    <meta-data

    android:name="AA_DB_VERSION"

    android:value="5" /> 数据库版本号

    ...

这个<application>是必须指定的,但你也可以使用自己的Application,继承自com.activeandroid.app.Application

?

1

publicclassMyApplicationextendscom.activeandroid.app.Application { ...

如果你不想或者不能继承com.activeandroid.app.Application的话,那么就这样

?

1

2

3

4

5

6

7

8

9

10

11

12

publicclassMyApplicationextendsSomeLibraryApplication {

@Override

publicvoidonCreate() {

super.onCreate();

ActiveAndroid.initialize(this);

}

@Override

publicvoidonTerminate() {x

super.onTerminate();

ActiveAndroid.dispose();

}

}

ActiveAndroid.initialize(this);做初始化工作,ActiveAndroid.dispose();做清理工作

创建数据库模型

(创建时候记得给个无参的构造方法)

我们使用@Table(name = "Items")来表示表,使用@Column(name = "Name")来表示列,ActiveAndroid会使用自增长的ID作为主键,然后按照注解描述,将类对应映射为数据库表。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@Table(name ="Items")

publicclassItemextendsModel {

@Column(name ="Name")

publicString name;

@Column(name ="Category")

publicCategory category;

publicItem(){

super();

}

publicItem(String name, Category category){

super();

this.name = name;

this.category = category;

}

}

依赖关系的数据库表

假如Item和Category是多对一的关系,那么我们可以这样子创建他们的类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@Table(name ="Items")

publicclassItemextendsModel {

@Column(name ="Name")

publicString name;

@Column(name ="Category")

publicCategory category;

}

<!-- lang: java -->

@Table(name ="Categories")

publicclassCategoryextendsModel {

@Column(name ="Name")

publicString name;

publicList<Item> items() {

returngetMany(Item.class,"Category");

}

}

如何保存和更新数据到数据库

单挑插入

保存Category对象

?

1

2

3

Category restaurants =newCategory();

restaurants.name ="Restaurants";

restaurants.save();

分配了一个category并且保存到数据库

?

1

2

3

4

Item item =newItem();

item.category = restaurants;

item.name ="Outback Steakhouse";

item.save();

批量插入

如果你要批量插入数据,最好使用事务(transaction)。

?

1

2

3

4

5

6

7

8

9

10

11

12

ActiveAndroid.beginTransaction();

try{

for(inti =0; i <100; i++) {

Item item =newItem();

item.name ="Example "+ i;

item.save();

}

ActiveAndroid.setTransactionSuccessful();

}

finally{

ActiveAndroid.endTransaction();

}

使用事务的话只用了 40ms,不然的话需要4秒。

删除记录

我们有三种方式删除一条记录

?

1

2

3

4

5

6

7

8

9

Item item = Item.load(Item.class,1);

item.delete();

<!-- lang: java -->

Item.delete(Item.class,1);

<!-- lang: java -->

newDelete().from(Item.class).where("Id = ?",1).execute();

很简单吧

查询数据库

作者将查询做的非常像SQLite的原生查询语句,几乎涵盖了所有的指令 com.activeandroid.query包下有以下类

  • Delete

  • From

  • Join

  • Select

  • Set

  • Update

我们举例说明吧

?

1

2

3

4

5

6

7

publicstaticItem getRandom(Category category) {

returnnewSelect()

.from(Item.class)

.where("Category = ?", category.getId())

.orderBy("RANDOM()")

.executeSingle();

}

对应的sqlite查询语句就是select * from Item where Category = ? order by RANDOM()当然还支持其他非常多的指令

  • limit

  • offset

  • as

  • desc/asc

  • inner/outer/cross join

  • group by

  • having 等等



更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 11.Android数据库SQLiteDatabase的使用
  3. Android数据存储之SQLCipher数据库加密
  4. android:ContentProvider
  5. Android数据存储之三SQLite嵌入式数据库(1)
  6. 如何使用GreenDAO 3.0
  7. 关于SQLite数据库的那些事儿
  8. Android之通知使用权
  9. Supernote 讓你在華碩的平板上做出不少好筆記(影片)

随机推荐

  1. Android(安卓)文件路径详解
  2. Android(安卓)Studio 4.0 稳定版发布了
  3. Android全埋点解决方案-认识
  4. android上实现Junit单元测试
  5. Android(安卓)DiskLruCache完全解析,硬盘
  6. webview 笔记二(android和js交互、包括链
  7. 从头学Android之Android的数据存储--File
  8. 获取Android短信草稿箱号码为空的解决办
  9. Android异步处理常用方法
  10. Android(安卓)UI开发第二十九篇——Andro