写在前面
在开发的过程中经常会用到数据库Sqlite。之前使用的是第三方的SqliteAssetsHelper,觉得很好用。只需要集成并书写一些必要的方法,提供外部增删改查的方法即可。那么我们今天来看下,另外一个很成熟的第三方-GreenDao。
简介
官网 http://greenrobot.org/greendao/
优势
1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化
集成步骤
第一步 添加依赖
在项目的根目录的build.gradle中添加
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
在app目录下的build.gradle中添加
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1
daoPackage 'com.wj.greendao.dao'
targetGenDir 'src/main/java'
}
dependencies{
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
}
属性介绍:
schemaVersion 指定数据库schema版本号,迁移等操作会用到
daoPackage dao的包名,包名默认是entity所在的包
targetGenDir 生成数据库文件的目录,会生成DaoMaster,DaoSession,XXXDao都放在此目录下。
第二步 创建Bean
创建一个Java Bean
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount;
}
到此基本配置完成。
第三步 编译
点击AS的build->Make Project 项目会自动在指定的目录下生成 这三个文件。
具体使用
一般在Application中进行初始化。
public class MyApplication extends Application {
private static final String DATA_NAME = "user";
private DaoSession session;
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = this;
setUpDatabase();
}
public static synchronized MyApplication getContext() {
return (MyApplication) context;
}
public void setUpDatabase() {
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, DATA_NAME);
SQLiteDatabase database = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(database);
session = daoMaster.newSession();
}
public DaoSession getSession() {
return session;
}
在清单文件中添加用户权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
并对application中添加自定义的MyApplication.
操作
/**
* 增加
*/
private void addUser() {
try {
User user = new User(null, "wj");
MyApplication.getContext().getSession().getUserDao().insert(user);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除
*/
private void deleteUser(){
MyApplication.getContext().getSession().getUserDao().deleteByKey(null);//按照key删除
// MyApplication.getContext().getSession().getUserDao().deleteAll();//删除所有
// MyApplication.getContext().getSession().getUserDao().delete();//删除一个bean
}
/**
* 更新数据
*/
private void updateUser(){
// MyApplication.getContext().getSession().getUserDao().update();
}
/**
* 查询数据
*/
private void searchUser(){
// User user = MyApplication.getContext().getSession().getUserDao().load(1);
// List<User> users = MyApplication.getContext().getSession().getUserDao().loadAll();
// List<User> list = MyApplication.getContext().getSession().getUserDao().queryBuilder().where(UserDao.Properties.Name.eq("")).list();
// MyApplication.getContext().getSession().getUserDao().queryRaw("wj","");
}
写在后面
简单的集成和操作调用就写到这里。后面有更新学习,再发表[二]。
GitHub:https://github.com/android99wj/MyGreenDao
个人微信公众号:摩羯座程序媛的日常 (dreamflower_hannah)