GreenDao 使用教程 二
2016-05-08 09:58
381 查看
上一篇 总结了grendao 环境搭建以及简单的增删查改,接下来将全面解析框架的使用,基于上篇的orm模型(Note)数据库讲解GreenDao的插入:插入的方式有很多:1:daoSession.getNoteDao().insert(note);//插入note 如果note指定主键与表中已经存在了,就会发生异常(android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: tb_note._id (code 1555))而插入不进去
daoSession.insert(note); 同上
2: daoSession.getNoteDao().insertOrReplace(note);
当主键存在的时候会替换,所以能够很好的执行插入操作,推荐daoSession.insertOrReplace(note); 同上
3: 原生的sqlite
String insertSql = String.format("insert into %s (%s,%s,%s) values('%s','%s','%s')",NoteDao.TABLENAME,NoteDao.Properties.Title.columnName,NoteDao.Properties.Content.columnName,NoteDao.Properties.CreateTime.columnName,note.getTitle(),note.getContent(),note.getCreateTime()); daoSession.getDatabase().execSQL(insertSql);
4:批量插入
public void insertBatch(List<Note> notes){ daoSession.getNoteDao().insertInTx(notes);}
GreenDao的更新操作
1:单条更新(唯一性条件是主键相同)public void update(Note note) throws Exception {daoSession.update(note);// daoSession.getNoteDao().update(note);}
2:批量更新
//批量更新public void updateBatch(List<Note> notes) throws Exception {daoSession.getNoteDao().updateInTx(notes);}
3:原生sql:
public void updateSql(String sql){// daoSession.getDatabase().execSQL("update .....");daoSession.getDatabase().execSQL(sql);}
GreenDao 的删除操作
1:单条删除(唯一性是主见相同)
public void delete(Note note) throws Exception { daoSession.delete(note);// daoSession.getNoteDao().delete(note);}2: 单条删除 指定主键删除
public void delete(long id) {daoSession.getNoteDao().deleteByKey(id);}
3:批量删除
public void deleteBatch(List<Note> notes) {daoSession.getNoteDao().deleteInTx(notes);}4:批量按主键删除
// 批量按主键删除public void deleteBatchByKey(List<Long> pkIds) {daoSession.getNoteDao().deleteByKeyInTx(pkIds);}
5:删除所有
public void deleteAll() throws Exception {daoSession.deleteAll(Note.class);// daoSession.getNoteDao().deleteAll();}
6:原始sqlite语句
daoSession.getDatabase().execSQL(deletesql);
GreenDao 查询操作 也是最复杂的
1:单条查询
//按主键查询public Note query(long pk) throws Exception {// daoSession.getNoteDao().load(pk);//按主见查询//daoSession.getNoteDao().load(rowId);//按行号查询return daoSession.load(Note.class, pk);}2: QueryBuilder 复合查询[/code]
public List<Note> queryBuider() throws Exception {//select from tb_note where Content like 'greendao'return daoSession.getNoteDao().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 daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Content.like("greendao")).buildCount().count();}
public void queryBuider3() throws Exception {Cursor cursor = null;try {//CursorQuery 部分查询CursorQuery greendao = daoSession.getNoteDao().queryBuilder().where(NoteDao.Properties.Content.like("greendao")).buildCursor();cursor = greendao.query();while (cursor.moveToNext()) {long id = cursor.getInt(0);String title = cursor.getString(1);String content = cursor.getString(2);String time = cursor.getString(cursor.getColumnIndex(NoteDao.Properties.CreateTime.columnName));}} finally {if (cursor != null)cursor.close();}}3:查询所有:
public void queryAll(){daoSession.loadAll(Note.class);daoSession.queryBuilder(Note.class).build().list();daoSession.getNoteDao().queryBuilder().build().list();daoSession.getNoteDao().loadAll();}
相关文章推荐
- Winner
- eclipse上hadoop源码阅读
- (1) Centos 7 install VirtualBox guest additions
- ubuntu14下python导入第三方so文件的路径问题
- Nginx 虚拟主机 VirtualHost 配置
- Android中使用ViewPager实现图片的切换
- Geek-Band--第十周分享
- 当使用使用SpringBoot时,要继承SpringBoot的POM的原因
- C++实验5-数组的分离
- 集合概述
- win32汇编 invoke 和 call区别
- springcloud(第五篇)springcloud turbine
- tar.xz文件如何解压
- iOS开发:UIBarButtonItem的简单用法
- 【转】${sessionScope.user}的使用方法
- MySQL开发规范和原则大全
- SQL多表连接查询
- Redis源码解析:18Hiredis同步API和回复解析API代码解析
- xss攻击
- qq客服代码