在Android 开发中,数据库模块是必不可少的.现在也有许多非常好用流行的数据库快速开发框架.今天主要介绍下xUtils下封装的数据库模块.
Android 常用数据库开发框架
在这里列一下Android开发中常用的数据库框架,有情趣的可以自行了解下,顺便储备点知识.
1.OrmLite
对象关系映射Lite(ORM Lite)提供了一些简单,轻量级的功能,用于将Java对象持久保存到SQL数据库,同时避免了更多标准ORM包的复杂性和开销。
2.LitePal
LitePal是一个开源的Android库,允许开发人员非常容易地使用SQLite数据库。您可以完成大部分数据库操作,而无需编写SQL语句,包括创建或升级表,crud操作,聚合函数等.LitePal的设置也非常简单,您可以在不到5分钟中将其集成到项目中。
3.GreenDao
greenDAO是一款轻巧快捷的Android版ORM,可将对象映射到SQLite数据库。greenDAO针对Android进行了高度优化,性能卓越,占用内存极少。
4.DBFlow
一个功能强大,功能强大且非常简单的ORM android数据库库,带有注释处理功能。
该库建立在速度,性能和可接近性的基础之上。它不仅消除了大多数用于处理数据库的样板代码,而且还提供了一个强大而简单的API来管理交互。
5.Realm
Realm是一个直接在手机,平板电脑或可穿戴设备中运行的移动数据库。此存储库包含Realm的Java版本的源代码,该版本目前仅在Android上运行。
xutils3.0数据库模块详解
项目加载
1.添加依赖
在app的build.gradle下添加以下依赖:1
compile 'org.xutils:xutils:3.5.0'
对于gradle3.0以上,compile已经被废弃了,需要使用api
如下:1
api 'org.xutils:xutils:3.5.0'
2.配置权限
在AndroidManifest中添加权限:1
2
3<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
3.初始化
在application的onCreate中初始化:1
2
3
4
5
6
7@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
...
}
以上就是xutils3.0的使用配置了,配置好并且初始化好下面我们就可以愉快的使用了
xutils-DB使用
1.创建数据库帮助类:DatabaseOpenHelper1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
* 数据库帮助类
* Created by darryrzhong on 2018/9/23.
*/
public class DatabaseOpenHelper {
private DbManager.DaoConfig daoConfig;
private static DbManager dbManager;
private final String DB_NAME="history.db";//数据库名
private final int VERSION = 1;
private DatabaseOpenHelper(){
//初始化数据库配置信息
daoConfig = new DbManager.DaoConfig()
.setDbName(DB_NAME)//设置数据库名称
.setDbVersion(VERSION)//设置初始版本号
.setDbOpenListener(new DbManager.DbOpenListener() {//监听数据库打开
@Override
public void onDbOpened(DbManager db) {
db.getDatabase().enableWriteAheadLogging();
//开启WAL, 对写入加速提升巨大(作者原话)
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {//监听数据库更新
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
}
});
dbManager= x.getDb(daoConfig);//获取数据库管理类
}
//单例设计
public static DbManager getInstance(){
if (dbManager==null){
DatabaseOpenHelper databaseOpenHelper = new DatabaseOpenHelper();
}
return dbManager;
}
}
2.创建JavaBean数据实体类
先介绍下注解字段意思:
注意必须添加注解字段,否则数据库无法识别,且实体类必须要有无参构造,否则数据库可能创建不成功
1
2
3 @Table(name = "details") 表名
@Column(name = "userid") 字段名
实体类如下:
1 |
|
3.创建数据操作类
1 | public class HistoryDB { |
4.使用数据库
创建以上操作类,就可以愉快的快速使用数据库了.
值得注意的是,xutils3并没有提供单独创建一张表的方法,他是在你调插入数据库操作的时候会判断是否存在这张表,如果不存在就会去创建,所以我们在取数据的时候需要判断表是否存在1
2
3
4
5
6
7db = new HistoryDB();
details= db.loadHistoryByUserId(sharedPreferences.getString("userId","000"));
if (details==null||details.size()==0){//如果表为空的话则为null,
tvHint.setVisibility(View.VISIBLE);
compile.setVisibility(View.GONE);
cleanHint.setVisibility(View.GONE);
}
还有一点值得注意就是,xutils插入数据库时,相同数据是会重复插入的,
所以我们可以按自身需求去解决,例如我这里保存视频观看记录不需要重复插入数据.
所以我根据id判断数据是否存在,不存在则插入数据库保存:1
2
3
4
5
6List<HistoryDetails> temp = hdb.loadHistoryByTitle(title);//同步默认账户观看记录
if (temp==null){
hdb.saveOrUpdate(historyDetails);//判断表是否存在
}else if (temp.size()==0){
hdb.saveOrUpdate(historyDetails);//判断数据是否存在
}
xutils使用就这么简单的完成了数据库的编写,使用起来步骤简单明了,当然还有很多缺憾,所以数据库模块比较繁重的话还是推荐以上介绍的几种开发框架.
欢迎关注作者darryrzhong,更多干货等你来拿哟.
请赏个小红心!因为你的鼓励是我写作的最大动力!
更多精彩文章请关注