目前实用的数据库框架有四种,都列出来方便下载重温
一:OrmLite
优点: 1.轻量级;2.使用简单,易上手;3.封装完善;4.文档全面。缺点:1.基于反射,效率比较低
jar包 地址:http://ormlite.com/releases/
集成方法:把jar包复制到as的libs文件夹下,并且引用jar包即可
二:LitePal
郭霖大神写的,我目前使用这个。下面提供下载和集成的方式
git 地址:https://github.com/LitePalFramework/LitePal
集成方法:compile ‘org.litepal.android:core:1.5.0’
三:GreenDao3.2(目前的主流数据库框架)
1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成
git 地址:https://github.com/greenrobot/greenDAO
集成方法: compile ‘org.greenrobot:greendao:3.2.0’
用于学习的相关博客:
http://www.open-open.com/lib/view/open1484706351512.html //简单使用
https://blog.csdn.net/speedystone/article/details/74193053 //进阶篇
在这里记录一下 GreenDao3.2.0的简单使用
一:配置GreenDao3.2.0
1.在project 的build.gradle中添加依赖,如下
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
//GreenDao3依赖
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
2.在app moudle的build.gradle中导入相关的jar包如下
//greendao依赖
compile ‘org.greenrobot:greendao:3.2.0’
3.在app moudle的build.gradle中配置数据库的相关信息(和defaultConfig同一级)
/greendao配置/
greendao {
/版本号,升级时可配置/
schemaVersion 1
}
配置完后 会出现错误 这时候需要在moudle 的build.gradle顶部加上
apply plugin: 'org.greenrobot.greendao'
这时就已经配置好了GreenDao了。接下来就是我们如何去使用他了
———————————————————–使用方法—————————————————————
一.创建一个javabean来作为一张表的数据 假如是用户的登录信息
@Entity
public class Shop {
@Id(autoincrement = true)
private Long id;
@Unique
//用户昵称
@Property
//年龄
private int age;
//头像url
private String head_url;
//用户地址
private String address;
private int type;
}
这里需要注意的是,创建完成之后,需要build gradle来完成我们的代码自动生成。其中生成的代码包含有
Bean实体的构造方法和get、set方法 2. DaoMaster、DaoSession、DAOS类,我们只需要点击下面图标即可
部分studio升级到了3.1后点击下方的按钮即可
所以当出现DaoMaster 和DaoSession找不到的时候,就是因为没有先创建一个bean,然后自动生成相关代码.
下面是对Bean对象的注释进行解释
@Entity:告诉GreenDao该对象为实体,只有被@Entity注释的Bean类才能被dao类操作
@Id:对象的Id,使用Long类型作为EntityId,否则会报错。(autoincrement = true)表示主键会自增,如果false就会使用旧值
@Property:可以自定义字段名,注意外键不能使用该属性
@Unique:该属性值必须在数据库中是唯一值
@Generated:编译后自动生成的构造函数、方法等的注释,提示构造函数、方法等不能被修改
@NotNull:属性不能为空
@Transient:使用该注释的属性不会被存入数据库的字段中
二:创建数据库名称(我一般在application中创建)
//数据库配置
DaoMaster.DevOpenHelper helper=new DaoMaster.DevOpenHelper(this,"user.db",null);
SQLiteDatabase db=helper.getWritableDatabase();
//获取数据库对象
DaoMaster daoMaster = new DaoMaster(db);
//获取Dao对象管理者
daoSession = daoMaster.newSession();
介绍一下相关api
DevOpenHelper:创建SQLite数据库的SQLiteOpenHelper的具体实现
DaoMaster:GreenDao的顶级对象,作为数据库对象、用于创建表和删除表
DaoSession:管理所有的Dao对象,Dao对象中存在着增删改查等API
由于我们已经创建好了DaoSession和User的Bean对象,编译后会自动生成我们的UserDao对象,可通过DaoSession获得
UserDao dao = daoSession.getUserDao();
GreenDao增删改查
/**
* 添加数据,如果有重复则覆盖
*
* @param User
*/
public static void insertUser(User user) {
BaseApplication.getDaoInstant().getUserDao().insertOrReplace(user);
}
/**
* 删除数据
*
* @param id
*/
public static void deleteUser(long id) {
BaseApplication.getDaoInstant().getUserDao().deleteByKey(id);
}
/**
* 更新数据
*
* @param shop
*/
public static void updateLove(User user) {
BaseApplication.getDaoInstant().getUserDao().update(user);
}
/**
* 查询条件为Type=TYPE_LOVE的数据
*
* @return
*/
public static List queryUser() {
return BaseApplication.getDaoInstant().getUserDao().queryBuilder().where(UserDao.Properties.Type.eq(User.TYPE_LOVE)).list();
}
/**
* 查询全部数据
*/
public static List queryAll() {
return BaseApplication.getDaoInstant().getUserDao().loadAll();
}
下面是常使用的api
增加单个数据
getUserDao().insert(user);
getUserDao().insertOrReplace(user);
增加多个数据
getUserDao().insertInTx(userList);
getUserDao().insertOrReplaceInTx(userList);
查询全部
List< user> list = getUserDao().loadAll();
List< user> list = getUserDao().queryBuilder().list();
查询附加单个条件
.where()
.whereOr()
查询附加多个条件
.where(, , ,)
.whereOr(, , ,)
查询附加排序
.orderDesc()
.orderAsc()
查询限制当页个数
.limit()
查询总个数
.count()
修改单个数据
getUserDao().update(shop);
修改多个数据
getUserDao().updateInTx(shopList);
删除单个数据
getTABUserDao().delete(user);
删除多个数据
getUserDao().deleteInTx(userList);
删除数据ByKey
getTABUserDao().deleteByKey();