上一篇 总结了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 使用教程的更多相关文章

  1. Android GreenDao使用教程

    1.在build.gradle里添加相关依赖 apply plugin: 'org.greenrobot.greendao' buildscript { repositories { mavenCen ...

  2. Android Studio2.0 教程MAC版 -快捷键篇

    本文转至 Android Studio2.0 教程从入门到精通MAC版 - 提高篇 ( OPEN 开发经验库) 第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面 ...

  3. Android图像处理实例教程

    Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750

  4. android用户界面详尽教程实例

    android用户界面详尽教程实例 1.android用户界面之AlarmManager教程实例汇总http://www.apkbus.com/android-48405-1-1.html2.andr ...

  5. [转]Android Studio系列教程六--Gradle多渠道打包

    转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...

  6. 【Android进阶系列教程】前言

    起因 因为初学Android的时候还没有写博客的意识,现在Android的门是入了,正在进阶的道路上行走,但是就这一路也走了不少的弯路.我想,总得来说Android入门还是比较容易的,网络资源比较丰富 ...

  7. Android Studio使用教程(二)

    以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装. ...

  8. Android Studio系列教程六--Gradle多渠道打包

    Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...

  9. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

随机推荐

  1. (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...

  2. sqlserver 分组 group by

    select 名称, COUNT(名称) as 数量之和from 信息group by all 名称

  3. layer弹出框的用法

    页面中引入  layer.js 就行了 1.弹出一个提示信息: layer.msg("我是哦提示信息"); 2.弹出一个带选择的按钮的框 layer.open({ title: ' ...

  4. iframe子页面调用父页面js函数

    window.parent.document.getElementById("test").value; jQuery方法为: $(window.parent.document). ...

  5. PHP SplObjectStorage使用实例

    SplObjectStorage是SPL标准库中的数据结构对象容器,用来存储一组对象,特别是当你需要唯一标识对象的时候,需要的朋友可以参考下: PHP SPL SplObjectStorage类实现了 ...

  6. html页面之间传值问题

    1.如再A页面(A.html)通过window.open(B.html?code=11)或者通过其他方式跳转到其它html页面时: 可通过以下方式进行传递参数. //B.html页面function ...

  7. Python基础学习_01修改代码所属作者

    1.修改开头的作者Author 2.具体步骤如下图 (1)点击下图所画的按钮 (2)具体操作如图所示,就可以得到自己想要的结果了.

  8. Centos6下创建Centos6基础镜像

    在centos6下可以使用官方仓库拉取一个指定系统类型跟tag的镜像到本地 [root@localhost ~]# docker pull centos:6.8 6.8: Pulling from c ...

  9. 【UOJ#50】【UR #3】链式反应(分治FFT,动态规划)

    [UOJ#50][UR #3]链式反应(分治FFT,动态规划) 题面 UOJ 题解 首先把题目意思捋一捋,大概就是有\(n\)个节点的一棵树,父亲的编号大于儿子. 满足一个点的儿子有\(2+c\)个, ...

  10. mongodb--linux下的安装

    linux下ubuntu的安装及启动 sudo apt-get upgrade sudo apt-get udpate sudo apt-get install mongodb 用 命令查看一下mon ...