greenDao是一个使用于android的ORM框架,现在主流的ORM框架有OrmLite,SugarORM,Active Android,Realm以及GreenDAO.
greenDao的性能远远高于同类的ORM框架,具体的测试结果官网有。
今天简单的用greenDao实现了数据库的增删改查,确实比以前自己写SQL语句舒服多了,不用再考虑SQL语句很方便。
想使用greenDao肯定要在项目中初始化它,不过它的初始化和其他的库不一样,对于第一次使用的新手确实是比较麻烦的事情
IDE工具:AndroidStudio
1.先把项目切换到Project,然后在main目录下新建一个java-gen的目录,和java目录平级,如图所示
2.ok,接下来切换到Android,在build.gradle引用greendao
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/java-gen']
}
}
compile 'org.greenrobot:greendao-generator:2.2.0'
compile 'org.greenrobot:greendao:2.2.0'
如图所示
3.这样只是完成初始部分,还不能直接使用GreenDao在项目中,刚开始确实比较麻烦,不过一切部署好了以后才是爽的开始
首先创建一个目录,命名为greendao,创建一个MyGreenDaoGenerator.java,在里面初始化项目的数据库
public class MyGreenDaoGenerator {
public static void main(String[] args) throws Exception {
//版本号,包名
Schema schema = new Schema(1, "demo.greendaodemo");
Entity user = schema.addEntity("User");
user.addIdProperty().primaryKey();
user.addStringProperty("userName").notNull();
user.addStringProperty("userSex").notNull();
new DaoGenerator().generateAll(schema, "../greenDaoDemo/app/src/main/java-gen");
}
}
当IDE提示这个样子的时候证明greendao已经初始化完成了,就可以在项目中使用greendao进行数据库的操作了
这个时候项目结构如图
上面的几个java文件是自动生成的 ,不用管
接下来看看如何进行简单的增删改查
app的界面如图所示
下面的listview展示数据库
首先得到Dao对象
devOpenHelper = new DaoMaster.DevOpenHelper(this, "greendao", null);
writableDatabase = devOpenHelper.getWritableDatabase();
daoMaster = new DaoMaster(writableDatabase);
daoSession = daoMaster.newSession();
//得到Dao的对象
userDao = daoSession.getUserDao();
创建sql的时候就只是简单的名字和年龄
private void addSQLite(String name, String sex) {
User user = new User(null, name, sex);
userDao.insert(user);
}
delete SQLite data
private void deleteSQLite(Long id) {
userDao.deleteByKey(id);
//delete sql all;
// userDao.deleteAll();删除全部
}
update SQLite data
private void upDateSQLite(long id, String name, String sex) {
userDao.update(new User(id, name, sex));
}
查询之后简单的弹个dialog显示查询到的数据
private void searchSQLite(long id) {
QueryBuilder queryBuilder = userDao.queryBuilder().where(UserDao.Properties.Id.eq(id));
// .list() Returns a collection of entity classes
List user = queryBuilder.list();
// If you only want results , use .unique() method
// Person person = queryBuilder.unique();
new AlertDialog
.Builder(this)
.setMessage(user != null && user.size() > 0 ? user.get(0).getUserName() + "--" + user.get(0).getUserSex() : "data null")
.setPositiveButton("ok", null).create().show();
}
最后上个效果图
Demo地址:git地址 csdn下载链接