Android(安卓)SugarORM(1)
Android Sugar ORM (1)
Android Sugar ORM
比我之前用过的ORM都要简单许多, 其目的是简化与Android中SQLite数据库的交互, 优点如下:
- 消除了编写SQL查询以及与SQLite数据库进行交互
- 由
Sugar ORM
负责创建数据库 - 由
Sugar ORM
负责管理对象关系 Sugar ORM
提供了用户数据库操作的简单清晰的api
Android Sugar ORM 的使用
1. 下载
官方文档上写的是需要在build.gradle
中添加, 如果使用的Android Studio
, 需要在build.gradle:(Module: app)
下的dependencies
中添加即可, 官网示例:
compile 'com.github.satyan:sugar:1.3'
但是貌似compile
已经被弃用了, 现在使用的是implementation
, 而且有目前我了解到的, 有1.4和1.5两个版本可以使用
implementation 'com.github.satyan:sugar:1.4'implementation 'com.github.satyan:sugar:1.5'
本篇采用的Sugar ORM: 1.5
2. 配置
开始使用Sugar ORM
前需要在AndroidManifest.xml
中进行简单的配置, 有一个比较需要注意的点, 就是需要设置标签下的
android:name
属性, 以及几项元数据, 你可以配置为你想要的包, 这时有两种方式, 比如:
android:name="com.orm.SugarApp"
使用这种方式时, 只需进行配置元数据即可android:name=".App"
使用这种方式时需要另外做下面几项修改, 其中.App
是任意你自定义的包
元数据标记都是可选的, 用途如下:
元数据 | 描述 |
---|---|
DATABASE | 生成的SQLite数据库名称 |
VERSION | 数据库架构的版本 |
QUERT_LOG | 记录日志, true:保存;false:不保存 |
DOMAIN_PACKAGE_NAME | 指定存在域/实体类的包名称 |
配置完以后会发现android:name=".App"
可能会报红, Android Studio
下按下Alt+Enter
创建App
类, 这时候Android Studio
会自动生成一个App
类继承于Application
改为继承于SugarApp
, 并重写onCreate()
和onTerminate()
:
public class App extends SugarApp { @Override public void onCreate() { super.onCreate(); SugarContext.init(this); } @Override public void onTerminate() { SugarContext.terminate(); super.onTerminate(); }}
3. 创建一个实体
这里有两种写法
public class Book extends SugarRecord { String title; String edition; public Book(){ } public Book(String title, String edition){ this.title = title; this.edition = edition; }}
在网上搜一些资料, 有的第二种写法是继承的是Model
类, 但是我试了后不行, 我改成了继承于SugarRecord
类, 试验后发现也可以, 后来查资料发现这个Model
可能是SugarRecord.Model
, 可能是版本问题, 我用的Sugar ORM: 1.5
版本, 发现SugarRecord
下并没有Model
, 这个还有待研究一下.
@Table(name = "Book")public class Book extends SugarRecord { @Column(name = "title") String title; @Column(name = "edition") String edition; public Book(){ } public Book(String title, String edition){ this.title = title; this.edition = edition; }}
4. 基本用法
Sugar ORM
执行CRUD操作非常简单, 只需要简单的效用类似于sava()
, delete()
, findById()
这类的方法, 当你存入数据的时候, 会自动生成一个索引, 我们截取SugarRecord
的一部分源代码就可以看到会有一个id
:
public class SugarRecord { public static final String SUGAR = "Sugar"; private Long id = null; private static SQLiteDatabase getSugarDataBase() { return getSugarContext().getSugarDb().getDB(); } public static int deleteAll(Class type) { return deleteAll(type, null); } public static int deleteAll(Class type, String whereClause, String... whereArgs) { return getSugarDataBase().delete(NamingHelper.toSQLName(type), whereClause, whereArgs); }}
值得注意的是这个id
是long
类型的, 在用的时候应该没有什么太大的问题, 此外官网特别提醒了一下, Sugar ORM
的记录索引值是从1开始的
保存实体:
Book book = new Book(ctx, "Title here", "2nd edition")book.save();
加载实体:
Book book = Book.findById(Book.class, 1);
更新实体:
Book book = Book.findById(Book.class, 1);book.title = "updated title here";book.edition = "3rd edition";book.save();
删除实体:
Book book = Book.findById(Book.class, 1);book.delete();
批量操作:
// 批量删除List books = Book.listAll(Book.class);Book.deleteAll(Book.class);
// 批量查询Iterator all = User.findAll(User.class);while (all.hasNext()){ User next = all.next(); Log.i("Sugar ORM", "onCreate: " + next.toString() + ":"+next.getId()+":"+next.username+":"+next.password);}
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- Android(安卓)7.0 SEAndroid(安卓)app权限配置
- 试用Android(安卓)Annotations
- Android不能进行http请求,https无法抓包的解决
- android 下 数据持久化
- Android(安卓)studio 的安装
- Android(安卓)studio 3.0安装配置方法图文教程
- Android_SQLite数据库详解
- Android数据存储操作