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

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

compile 'com.github.satyan:sugar:1.5'

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

//创建的数据库db的文件名,将在/data/data/{你的应用包名}/databases下创建对应的文件

android:name="DATABASE"

android:value="你的数据库操作类所在的文件夹目录" />

//数据库版本号

android:name="VERSION"

android:value="2" />

//是否允许SugarORM记录log

android:name="QUERY_LOG"

android:value="${DB_LOGGER}" />

//创建数据库表对应的Bean所在的包的路径

android: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 list() {

synchronized (Cst.DB_LOCK) {

List 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.png

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

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

  1. 【Android】在Android上使用OrmLite数据库框架 之 基本用法

    转载自:http://blog.csdn.net/oo8_8oo/article/details/7302156 官网:http://ormlite.com/ 官方帮助,目录: http://orml ...

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

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

  3. 如何在 Android 中使用 ObjectBox 数据库框架?

    导读 不论是对象映射还是数据集合,Android开发者有太多数据库框架可以选择.ObjectBox数据库这个号称移动端最快的数据库框架,具有超快速.面向对象的API.单元测试即时.线程简单.数据库可自 ...

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

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

  5. Android的LitePal开源数据库框架学习笔记

    LitePal是一款非常好用的数据库开源框架,它采用了对象关系映射(ORM)的模式,使用这个框架从创建数据库到操作数据库都变成极其简单,那么我们就开始学习吧.它的开源地址:https://github ...

  6. Android数据库框架-----ORMLite 的基本用法

    ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...

  7. 数据库框架Sugar的使用

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

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

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

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

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

最新文章

  1. 硬盘显示容量和实际容量不符合_为啥我买的64G U盘实际只有57G?聊聊存储市场的“不足量”现象...
  2. AJAX 请求真的不安全么?
  3. centos 系统初始配置优化
  4. c语言程序设计第3周编程作业(数字特征)
  5. extern的关键字用法(C# 参考)
  6. 【Vue案例二】实现对表单数据的添加、删除以及关键字查询操作
  7. Linux嵌入式开发_修改机器码
  8. dynamips中网卡参数如何和网络连接中的具体网卡匹配
  9. 酒店管理系统功能模块图
  10. sigmod函数求导
  11. npm 脚本跨平台设置环境变量命令 cross-env
  12. C# 盛金公式 求解一元三次方程
  13. Homebrew安装与配置(Linux)
  14. jquery 常用选择器和方法以及遍历(超详细)
  15. 老男孩46期—冯仁波
  16. 有了这个库,这些爬虫都不用亲自写了
  17. Matlab相机标定可能遇到的报错
  18. 本科准程序员如何才能进入腾讯,阿里等一流的互联网公司?
  19. 《攻壳机动队》+押井守
  20. 视频打开显示服务器运行失败,电脑打不开本地视频如何修复

热门文章

  1. 利用wxpython编写GUI
  2. (转载)Ubuntu如何进入图形界面
  3. [转]基于SQL Server 2008 Service Broker构建企业级消息系统
  4. 跑linux编译什么CPU速度快,linux 加快编译速度
  5. python类的定义与使用_Python15类的定义和使用
  6. mfc globalalloc能分配多大空间_办公家具定制充分利用办公室空间,提高员工之间工作效率...
  7. 聚簇索引和非聚簇索引的区别_学习索引的一些总结
  8. java mian 方法_Java mian函数
  9. 数据库基础知识——参考数据库基本概念6版
  10. java字节输出流方法,Java-IO:File和字节输入输出流