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);    }}

值得注意的是这个idlong类型的, 在用的时候应该没有什么太大的问题, 此外官网特别提醒了一下, 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);}

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. Android(安卓)7.0 SEAndroid(安卓)app权限配置
  3. 试用Android(安卓)Annotations
  4. Android不能进行http请求,https无法抓包的解决
  5. android 下 数据持久化
  6. Android(安卓)studio 的安装
  7. Android(安卓)studio 3.0安装配置方法图文教程
  8. Android_SQLite数据库详解
  9. Android数据存储操作

随机推荐

  1. android使用HttpGet和HttpPost访问HTTP资
  2. Android 震动示例--心跳效果
  3. Android 调用相册或相机选择图片
  4. Android(安卓)获取 当前日期的前后n天的
  5. ListView(Adapter实现)
  6. 终于上班了
  7. Android下拉刷新上拉加载控件的使用
  8. Android(安卓)Studio 项目gradle构建 仓
  9. android:json解析库的选择
  10. Android(安卓)4.2 JellyBean Graphic Com