上一篇讲述了greenDao在android studio中的配置过程,已经简单的查询语句,这是一个数据库框架,要用好一个数据库框架我们仅仅只会配置是远远不够的,我们要熟悉他能干什么,他能给我们带来的便捷操作,这样我们使用的时候就可以事半功倍,围绕这两个问题我们再一起探究这个:
1:性能最大化
2:内存开销最小
3:API 简单好用
4:对Android 高度优化
5:2.2版本以上还支持加密数据库
GreenDao的插入:
for (int i = 0; i < 20; i++) {
PersonEntity person = new PersonEntity((long) i,"孙悟空"+i,20+i,"男");
// 使用这个方法可以一条一条的写入数据库
personDao.insert(person);
// 插入或者替换单条数据,就是id重复也可以使用
// personDao.insertOrReplace(person);
personList.add(person);
// 这个方法可以将一个集合直接写入数据库,很方便
// personDao.insertInTx(personList);
// 看名字也知道是干嘛的了吧,把数据写入,或者替换
// personDao.insertOrReplaceInTx(personList);
、、
//批量插入
//personDao.insertInTx(persons)//参数是一个集合
}
那来看看原生的sqlite
String insertSql = String.format("insert into %s (%s,%s,%s) values('%s','%s','%s')",
personDao.TABLENAME,
personDao.Properties.Title.columnName,
personDao.Properties.Content.columnName,
personDao.Properties.CreateTime.columnName,
person.getTitle(),
person.getContent(),
person.getCreateTime());
daoSession.getDatabase().execSQL(insertSql);
很显然原声比较麻烦,需要些sql语句,然而我们在写sql语句的时候很容易出错,而且每次都要写很多的代码,这个时候就体现框架的便捷性
GreenDao更新操作
personDao.update(new PersonEntity(1l,"贝吉塔",100,"男"));单个跟新
personDao.updateInTx(personDaos);//批量跟新
相对于数据库原生操作简单了很多
GrennDao的删除操作
1:单条删除(唯一性是主见相同)
personDao.delete(new PersonEntity(1l,"贝吉塔",100,"男"));
2: 单条删除 指定主键删除
personDao.deleteByKey(31);
3:批量删除
personDao.deleteInTx(persons);
4:批量按主键删除
personDao.deleteByKeyInTx(persons);
5:删除所有
personDao.deleteAll(Person.class)
GreenDao 查询操作 也是最复杂的
1:按照id主键查询
personDao.load(31)
2: QueryBuilder 复合查询
public List<Note> queryBuider() throws Exception {
//select from tb_note where Content like 'greendao' 查询语句
return personDao().queryBuilder()
.where(NoteDao.Properties.Content.like("greendao")).build().list();
}
public long queryBuider2(long pk) throws Exception {
//select count(*) from tb_note where Content like 'greendao' 查询语句
return personDao().queryBuilder()
.where(NoteDao.Properties.Content.like("greendao")).buildCount().count();
查询所有的四种方法
daoSession.loadAll(Note.class);
daoSession.queryBuilder(Note.class).build().list();
daoSession.getNoteDao().queryBuilder().build().list();
personDao.loadAll();
最后附上几个截图:
这张图是项目结构
这两张图是android studio引入框架集成截图
最后,当然数据库操作远远不止这么多操作,今天先写到这里,等用熟了这个框架以后,熟读源码后再作一篇总结,谢谢各位读友。