Sprinkles: 另类的 Android ORM 类库

作者: rain 分类: 移动 发布时间: 2014-01-08 19:33 6 条评论

sprinkles是一个观点比较奇特的 ORM 类库, 该库和常见的 ORM 类库不太一样,该库主要用来处理 插入、更新和删除数据 的功能,还可以帮助你把  Cursor 对象中的数据转换为 数据模型对象。

sprinkles 把查询留给了 SQL 语句,毕竟 SQL 语句就是用来做各种查询操作的。这是 SQL 语句的精华所在, ORM 框架为了实现各种 SQL 查询语句通常搞的效率比较低下、各种诡异的 Bug 频繁出现 等。

sprinkles 还可以和 https://github.com/square/retrofit 结合起来,直接把服务器返回的数据保存到数据库中。

在 sprinkles 代码中包含了一个简单的记事本示例应用演示了 sprinkles 的主要功能,代码在这里, 下面简单通过该示例介绍下如何使用 Sprinkles:

1. 引用该库,你可以用 Gradle 也可以去下载源代码来使用。

2. 然后定义数据模型类,下面是示例中的几个数据模型类的定义。

注意:使用 Sprinkles 模型类需要继承 Model 类并且需要使用 @Table 注解, @Table 注解的参数为该模型对应的数据库表名字。

3. 定义模型的字段

每个字段需要用 @Column 注解,其参数为字段的名字。 另外用 @AutoIncrementPrimaryKey 可以标记一个自增 id 主键。

4. 使用关系

可以用 @ForeignKey 来标记外键,并可以用 @CascadeDelete 来标记级联关系。

5.  保存数据

在 Model 类中定义了一些保存数据的声明周期回调函数,这里你可以做一些操作,比如 下面示例中使用的 beforeCreate 和 beforeSave 回调函数:

在 beforeCreate 回调函数中初始化 创建的日期,在 beforeSave 中初始化更新的日期。

还可以用 isValid 回调函数来判断该模型数据是否合法。

6. 生成数据库

数据模型定义完后,就可以用来生成数据库了。要生成数据库需要在应用的 Application 中使用,

这样当应用启动的时候,会自动更新数据库表格。

7. 查询数据

异步查询数据的例子, 上面的代码可以分成两部分, Query.many() 和 getAsync()Query.many() 用来初始化一个返回特定类型的查询语句,示例中返回的是 Note 对象,然后是查询语句,在查询语句中可以使用 ? 占位符,并在后面的参数中设置占位符的值; getAsync()  函数使用了三个参数,第一个是执行查询语句的 loaderManager , 第二个是一个结果返回的回调接口,第三个是一个该查询依赖的对象,这里是 NoteTagLink 类,这样当 NoteTagLink 对象数据发生变化的时候,该查询语句的数据也会更新。如果没有依赖项,则可以不设置第三个参数。

8. 使用数据

当查询数据返回的时候,在 回调接口中可以获取到一个 CursorList 对象,里面包含的对象的数据:

9. 保存数据

另外还有一个 saveAsync() 函数可以用来异步保存数据,该函数使用一个回调接口来通知保存完成事件。

下面是一些更多的示例代码:

从上面简单的示例中,可以看到 Sprinkles 提供的主要功能。一些常规的创建数据库表、插入、删除 、线程 等操作都封装好了,而查询本身就是比较复杂的,留给你自己灵活使用。可以说,设计的理念还是比较有意思的,可以尝试下!

本文出自 云在千峰,转载时请注明出处及相应链接。

本文永久链接: http://blog.chengyunfeng.com/?p=559

Ɣ回顶部