Android GreenDao 使用教程
上一篇 总结了grendao 环境搭建以及简单的增删查改,接下来将全面解析框架的使用,基于上篇的orm模型(Note)数据库讲解
GreenDao的插入:
插入的方式有很多:
daoSession.getNoteDao().insert(note);
//插入note 如果note指定主键与表中已经存在了,就会发生异常(android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: tb_note._id (code 1555))而插入不进去
daoSession.insert(note); 同上
daoSession.getNoteDao().insertOrReplace(note);
当主键存在的时候会替换,所以能够很好的执行插入操作,推荐
daoSession.insertOrReplace(note); 同上
原生的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);
批量插入
 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 复合查询
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();
               String title = cursor.getString();
               String content = cursor.getString();
               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();
}
Android GreenDao 使用教程的更多相关文章
- Android GreenDao使用教程
		
1.在build.gradle里添加相关依赖 apply plugin: 'org.greenrobot.greendao' buildscript { repositories { mavenCen ...
 - Android Studio2.0 教程MAC版 -快捷键篇
		
本文转至 Android Studio2.0 教程从入门到精通MAC版 - 提高篇 ( OPEN 开发经验库) 第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面 ...
 - Android图像处理实例教程
		
Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750
 - android用户界面详尽教程实例
		
android用户界面详尽教程实例 1.android用户界面之AlarmManager教程实例汇总http://www.apkbus.com/android-48405-1-1.html2.andr ...
 - [转]Android Studio系列教程六--Gradle多渠道打包
		
转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...
 - 【Android进阶系列教程】前言
		
起因 因为初学Android的时候还没有写博客的意识,现在Android的门是入了,正在进阶的道路上行走,但是就这一路也走了不少的弯路.我想,总得来说Android入门还是比较容易的,网络资源比较丰富 ...
 - Android Studio使用教程(二)
		
以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装. ...
 - Android Studio系列教程六--Gradle多渠道打包
		
Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...
 - Android Studio系列教程五--Gradle命令详解与导入第三方包
		
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
 
随机推荐
- ubuntu下svn up 出现 Can't convert string from 'UTF-8' to native encoding
			
root@ubuntu:/data/www# svn up svn: warning: cannot set LC_CTYPE locale svn: warning: environment var ...
 - python第三方模块大杂烩
			
Python单元测试框架之pytest---如何执行测试用例 unittest单元测试框架实现参数化 (用例有相似参数断言时使用,可以精简代码) python中标示符作用详解 一篇文章让你彻底搞清楚P ...
 - getopt函数
			
getopt -- 解析命令的可选项 [说明]getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1.形如:cmd [-a][-b] //对短选项的解析: ...
 - 小白学习Spark系列三:RDD常用方法总结
			
上一节简单介绍了Spark的基本原理以及如何调用spark进行打包一个独立应用,那么这节我们来学习下在spark中如何编程,同样先抛出以下几个问题. Spark支持的数据集,如何理解? Spark编程 ...
 - Code VS 1002 搭桥
			
题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...
 - java深入的单例模式
			
在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容易出现问题.下面就单例设计模式详细的探讨一下. 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在 ...
 - 使用jekyll配置一个自己的blog
			
使用coding.net上提供的pages服务来配置一个自己的站点 提示:下载这些软件,最好能FQ,有些链接是国外的,淘宝的ruby镜像已经不提供服务了 1. 安装Ruby 2. 安装Rubygems ...
 - A - Jungle Roads
			
A - Jungle Roads 思路:并查集的板子,重点是字符的转换,不能忘了加上1. #include<cmath> #include<cstdio> #include&l ...
 - java的数组index[]方括号内是可以进行算数运算的
			
java的数组index[]方括号内饰可以进行算数运算的 如: String[] stringArray = testString.split("\\."); System.out ...
 - plsql解决64位解决办法
			
plsql解决64位解决办法 设置PLSQL Developer访问本机64位Oracle 由于在本机Windows Server 2008 R2 X64上安装了64位的Oracle 11.2.0.1 ...