前段时间项目中有一个比较简单的收藏功能,鉴于需求简单就准备直接用第三方了,同事说这个很好用,索性项目中就使用了Sugar.下面总结一下Sugar的基本使用。

1.在项目的build.gradle中注入Sugar所需的依赖

compile 'com.github.satyan:sugar:1.5'
复制代码

2.在项目的.AndroidManifest.xml中配置相关参数

 <!--Sugar数据库配置-->
//创建的数据库db的文件名,将在/data/data/{你的应用包名}/databases下创建对应的文件 <meta-dataandroid:name="DATABASE"android:value="你的数据库操作类所在的文件夹目录" />
//数据库版本号 <meta-dataandroid:name="VERSION"android:value="2" />
//是否允许SugarORM记录log <meta-dataandroid:name="QUERY_LOG"android:value="${DB_LOGGER}" />
//创建数据库表对应的Bean所在的包的路径 <meta-dataandroid:name="DOMAIN_PACKAGE_NAME"android:value="你的实体类所在的文件夹目录" />
复制代码

3.创建数据库实体类

相关注解 @Column这个注解意思是说你想强制按照你的规定的名字来创建表中对应的字段名字,所以这里的skuId在Goods表中的字段名就不是默认的sku_id了,而是你自己给的sku_ID @Expoes是来自于Gson的的一个注解,后面会说到 @Ignore这个注解强调这个属性在表中不要创建对应的字段

public class SongCollection extends SugarRecord implements Serializable {private long songId;private String songName;private String singerName;private String picUrl;private String playUrl;private long mvId;
复制代码

此处对象实体需要继承SugarRecord,补全get/set方法即可,便于传对象随手实现一下Serializable 。

4.相关操作-增删改查

此处本人用了一个加锁单例来管理相关操作

public class SongCollectionManager {private static SongCollectionManager instance;private SongCollectionManager() {}public static SongCollectionManager getInstance() {if (instance == null) {synchronized (SongCollectionManager.class) {if (instance == null) {instance = new SongCollectionManager();}}}return instance;}
复制代码
  • 增 对象名直接调用save()方法即可
   public void save(SongCollection songCollection) {synchronized (Cst.DB_LOCK) {songCollection.save();}}
复制代码
  • 删 1.删除一条数据 对象名直接调用delete()方法即可
public void delete(long songId) {synchronized (Cst.DB_LOCK) {SongCollection songCollection = SongCollection.findById(SongCollection.class, songId);songCollection.delete();}}
复制代码

2.删除表中所有条目

SongCollection.deleteAll(SongCollection.class)
复制代码
  • 改 修改相关属性,然后再次存数据达到修改的效果
 SongCollection songCollection = SongCollection.findById(SongCollection.class, songId);
songCollection .setSingerName("Rice");
songCollection .save();
复制代码
  • 查 通过条件查询返回一个list
    public List<SongCollection> list() {synchronized (Cst.DB_LOCK) {List<SongCollection> list = Select.from(SongCollection.class).orderBy("id desc").list();if (list == null) {list = new ArrayList<>();}return list;}}
复制代码
  • 判断是否存在 项目中需要判断某个对象是否存在,故写了这个方法,一并贴出
public boolean find(long songId) {synchronized (Cst.DB_LOCK) {SongCollection songCollection = SongCollection.findById(SongCollection.class, songId);if (songCollection != null) {return true;} else {return false;}}}
复制代码
  • 统计总数
 private int count() {synchronized (Cst.DB_LOCK) {int size = (int) SongCollection.count(SongCollection.class);return size;}}
复制代码

特别提醒,敲黑板了~

此处可以看见SugarRecord对象中有一个Long类型的id,如果你的返回数据对象里面也有一个id,这个id是一个自增长的字段,可以拿来升降序排列,但是这个id也可以直接拿来使用,get/set方法也已经提供,如若直接使用此id,则需要重新用一个字段来当主键自增然后排序。

转载于:https://juejin.im/post/5cac03ed5188251ae57546a9

数据库框架Sugar的使用相关推荐

  1. android sugar框架 使用,数据库框架Sugar的使用

    前段时间项目中有一个比较简单的收藏功能,鉴于需求简单就准备直接用第三方了,同事说这个很好用,索性项目中就使用了Sugar.下面总结一下Sugar的基本使用. 1.在项目的build.gradle中注入 ...

  2. 数据库框架Sugar的使用详解

    前段时间项目中有一个比较简单的收藏功能,鉴于需求简单就准备直接用第三方了,同事说这个很好用,索性项目中就使用了Sugar.下面总结一下Sugar的基本使用. 1.在项目的build.gradle中注入 ...

  3. sqlite java框架_SQlite数据库框架:LitePal

    常用的数据库框架 Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.And ...

  4. Android客户端开发—开源数据库框架LitePal

    LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...

  5. Java-ORM数据库框架CDM介绍

    cdm-core Cdm Framework 一个使用简单,零配置,容错率高,效率的Java™ ORM 数据库框架 ✨ 特性 使用简单 没有依赖,一行代码即可初始化连接,调用接口像使用脚本语言一样畅爽 ...

  6. Android 数据库框架ormlite 使用精要

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  7. php mysql 框架_Medoo 轻量级的 PHP 数据库框架 - 文章

    Medoo 是一个轻量级的PHP数据库框架,提高开发效率,Medoo 需要 PHP 支持 PDO 扩展,请在配置文件中开启 PDO 扩展. 为什么选择 Medoo 非常的轻量 未压缩只有 34KB. ...

  8. 安卓进阶系列-07数据库框架(GreenDAO)的使用

    GreenDAO的使用 简介 安卓提供了一个占用内存极小的数据库SQLite,也提供了不少操作数据库的API,然而不是所有程序员都擅长编写SQL语句,这时一个ORM的数据库框架就显得很好用了. 在之前 ...

  9. 安卓进阶系列-06数据库框架(LitePal)的使用

    LitePal的使用 背景 安卓内置了一个轻量数据库SQLite,然而很多时候使用SQLite是不方便的,更多开发者习惯服务器部署MySQL之类的数据库,而且复杂的SQL语言对于很多没有系统学习过数据 ...

最新文章

  1. 四川大学线下编程比赛第一题:数字填充
  2. [Objective-c 基础 - 2.4] 多态
  3. FineUI 页面跳转
  4. es5.0 安装head插件
  5. 来电科技:基于Flink+Hologres的实时数仓演进之路
  6. 计算机二级c语言公共基础题,计算机二级C语言笔试公共基础知识课后习题及答案...
  7. 在一个热图中使用多个颜色主题
  8. Physically Based Rendering,PBRT(光线跟踪:基于物理的渲染) 笔记
  9. php呼叫平台,什么是PHP运算符“?和“:”呼叫和他们做什么?
  10. attention机制的几种方法
  11. PS各种实用的辅助工具
  12. ERP生产管理系统源码
  13. ORACLE11G学习视频
  14. android开发动态图ae,动影ae动态图片特效制作
  15. 大二上学期总结与感想
  16. 扫雷——关于展开空格的算法
  17. mysql注入转义绕过_SQL注入防御绕过——宽字节注入
  18. 如何在线批量进行PDF拆分
  19. 金庸小说里面的爱情观
  20. 【Dubbo实战】基础学习篇(一)

热门文章

  1. rateless code 与喷泉码(Fountain code)
  2. stop()、suspend()、resume() 弃用的原因(缺点)
  3. 在线音乐播放问题全解
  4. 天才小毒妃 第905章 宁静,你输了
  5. ppt文本框含公式时的同时显示
  6. 网络营销之qq群推广技巧
  7. 关于PS基础设计学习总结——选择工具和选区
  8. (附源码)计算机毕业设计SSM健身房预约平台
  9. 大话水浒服务器不显示,《大话水浒》9月25日服务器合并公告
  10. pc端与移动端适配 解决方案