以前听朋友说他们项目中要在本地存许多数据库表,管理数据库打算使用GreenDao,那个时候好像GreenDao要使用的话需要先建一个Java工程,生成一些代码,然后再在Android项目中使用。今天看了看github上GreenDao项目,搜了几遍文章看看,做一个笔记。
一,GreenDao是什么?
GreenDao是android中的一个ORM框架,用于操作本地数据库,现在市面上主流的框架有 GreenDAO、OrmLite、SugarORM、Active Android、Realm等。GreenDao在使用起来时据其官网说效率比其他orm框架要高,使用它可以简化我们对SQLite数据库的操作。
二,GreenDao 3.*的使用
github地址 https://github.com/greenrobot/greenDAO
GreenDao 3.*版本的基本的增删改查功能使用起来比较简单。
1. 按照github上的接入步骤在我们的项目中添加GreenDao依赖
2. 在app的gradle配置文件中的android节点中配置生成文件路径
/*greendao数据库配置*/
greendao {
schemaVersion 1//指定数据库schema版本号,迁移等操作会用到
daoPackage 'com.huan.greendaolearn.greendao.gen'//dao的包名,包名默认是entity所在的包
targetGenDir 'src/main/java'//生成数据库文件的目录
}
3. 在greendao.gen目录下编写一个实体类User,然后Rebuild Project,这样就会在greendao.gen目录下生成DaoMaster,DaoSession,UserDao文件
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount;
}
4. 在Application的实现类中初始化数据库
public class MyApplication extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
private static MyApplication instance;
public DaoSession getmDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
@Override
public void onCreate() {
super.onCreate();
instance = this;
setDatabase();
}
public static MyApplication getInstance() {
return instance;
}
/**
* 设置greendao
*/
private void setDatabase() {
//这里并不需要写create table这样的sql语句,因为greenDao已经帮助实现了
//默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,这将导致数据丢失,
//所以在正式的项目中,应该做一层封装,以实现数据库的安全升级
mHelper = new DaoMaster.DevOpenHelper(this, "notes_db", null);
db = mHelper.getWritableDatabase();
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
}
5. 在MainActivity中我们就可以使用UserDao对象进行数据库操作了
获取UserDao对象
mUserDao = MyApplication.getInstance().getmDaoSession().getUserDao();
进行增删改查
@OnClick(R.id.add)
void addClicked() {
mUser = new User((long) 2, "张三");
mUserDao.insert(mUser);
}
@OnClick(R.id.delete)
void delClicked() {
mUserDao.deleteByKey((long) 2);
}
@OnClick(R.id.update)
void updClicked() {
mUser = new User((long) 2, "张三san");
mUserDao.update(mUser);
}
@OnClick(R.id.select)
void selClicked() {
List<User> users = mUserDao.loadAll();
String username = "";
for (int i = 0; i < users.size(); i++) {
username = users.get(i).getName() + ",";
}
resTv.setText(username);
}
三,写完这个demo感觉入门还是挺简单的,之前听朋友说要先用一个Java工程生成一些代码,然后再在项目中使用,这应该是2.x的使用方法。3.x 使用起来感觉简单了许多。通过这次的学习,也算是简单的了解了下GreenDao的一些简单的用法。
参考文章:
GreenDao3.0简单使用