前段时间项目中有一个比较简单的收藏功能,鉴于需求简单就准备直接用第三方了,同事说这个很好用,索性项目中就使用了Sugar.下面总结一下Sugar的基本使用。
1.在项目的build.gradle中注入Sugar所需的依赖
compile 'com.github.satyan:sugar:1.5'
2.在项目的.AndroidManifest.xml中配置相关参数
<!--Sugar数据库配置-->
//创建的数据库db的文件名,将在/data/data/{你的应用包名}/databases下创建对应的文件
<meta-data
android:name="DATABASE"
android:value="你的数据库操作类所在的文件夹目录" />
//数据库版本号
<meta-data
android:name="VERSION"
android:value="2" />
//是否允许SugarORM记录log
<meta-data
android:name="QUERY_LOG"
android:value="${DB_LOGGER}" />
//创建数据库表对应的Bean所在的包的路径
<meta-data
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<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;
}
}
网友评论