1、在build.gradle里添加相关依赖

apply plugin: 'org.greenrobot.greendao'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}

注意位置

2、添加一个Dao

@Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String name;
private int age;
private String sex; }

Build会自动生成代码,如果不写buildscript 则不会生成
生成代码如下

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated; @Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String name;
private int age;
private String sex;
@Generated(hash = 689493095)
public User(Long id, String name, int age, String sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
} }

3,同样建立一个新实体类,build

@Entity
public class dayStep {
    @Id
    private long id;
    private String date;
    private int step;  
    private Long sportId;
    @ToOne(joinProperty = " sportId")
    private SportInfo sportInfo;//关系表
}

4、创建一个application类,在application中完成DaoSession的初始化,避免以后重复初始化,便于使用。

 public class MyApplication extends Application {
    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    //静态单例
    public static MyApplication instances;
    @Override
    public void onCreate() {
        super.onCreate();
        instances = this;
        setDatabase();
    }
    public static MyApplication getInstances(){
        return instances;
    }     /**
     * 设置greenDao
     */
    private void setDatabase() {
        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
        mHelper = new DaoMaster.DevOpenHelper(this, "sport-db", null);
        db = mHelper.getWritableDatabase();
        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }
    public DaoSession getDaoSession() {
        return mDaoSession;
    }
    public SQLiteDatabase getDb() {
        return db;
    }
}

5、Greendao操作数据库文件(增,删,改,查)

 /**
     * 增
     */
    public void insert()
    {
        String date = new Date().toString();
        mDayStep = new dayStep(null,date,0);//第一个是id值,因为是自增长所以不用传入
        dao.insert(mDayStep);
    }     /**
     * 查
     */
    public void Search()
    {
        //方法一
        List<dayStep> mDayStep = dao.loadAll();
        //方法二
        //List<dayStep> mDayStep = dao.queryBuilder().list();
        //方法三 惰性加载
        //List<dayStep> mDayStep = dao.queryBuilder().listLazy();
        for (int i = 0; i < mDayStep.size(); i++) {
            String date = "";
            date = mDayStep.get(i).getDate();
            Log.d("cc", "id:  "+i+"date:  "+date);
        }     }     /**
     * 删
     * @param i 删除数据的id
     */
    public void delete(long i)
    {
        dao.deleteByKey(i);
        //当然Greendao还提供了其他的删除方法,只是传值不同而已
    }     /**
     *改
     * @param i
     * @param date
     */
    public void correct(long i,String date)
    {
        mDayStep =  new dayStep((long) i,date,0);
        dao.update(mDayStep);
    }    /**
     *修改或者替换(有的话就修改,没有则替换)
     */ 
    public void insertOrReplace(long i,String date)
  {
      mDayStep = new dayStep((long) i,date,0);
      dao.insertOrReplace(mDayStep);
    }    /**
     *查找符合某一字段的所有元素
     */
   public void searchEveryWhere(String str)
   {
List<dayStep> mList = dao.queryBuilder()
                .where(dao.date.eq(str)).build().listLazy();
   }
List<dayStep> mList = dao.queryBuilder()
                .where(dao.date.eq(str)).build().listLazy();
   }

6、最重要一步,在AndroidManifest.xml里增加一句话

<application
android:name=".MyApplication"

Android GreenDao使用教程的更多相关文章

  1. Android GreenDao 使用教程

    上一篇 总结了grendao 环境搭建以及简单的增删查改,接下来将全面解析框架的使用,基于上篇的orm模型(Note)数据库讲解 GreenDao的插入: 插入的方式有很多: daoSession.g ...

  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. 【Luogu3731】[HAOI2017]新型城市化(网络流,Tarjan)

    [Luogu3731][HAOI2017]新型城市化(网络流,Tarjan) 题面 洛谷 给定一张反图,保证原图能分成不超过两个团,问有多少种加上一条边的方法,使得最大团的个数至少加上\(1\). 题 ...

  2. luogu3292 幸运数字 (点分治+线性基)

    首先第一眼是一个倍增套线性基,但是$O(Qlog^2Vlog^N)=10^{10}$的复杂度... 即使是st表也只是变成了$O(Nlog^2Vlog^N)$啊 考虑点分治,相对于倍增显著减少了线性基 ...

  3. MySQL命令,一篇文章替你全部搞定

    MySQL命令,一篇文章替你全部搞定 MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又 ...

  4. Django(十)COOKIE和session

    https://www.cnblogs.com/haiyan123/p/7763169.html from django.shortcuts import render,redirect # Crea ...

  5. postman基于webservice的请求

    以  http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo   为例 1.先理解事例的内容,请求头和响应 ...

  6. 整合shiro出现【Correct the classpath of your application so that it contains a single, compatible version of org.quartz.Scheduler】

    跑的时候出现错误: Description: An attempt was made to call the method org.quartz.Scheduler.getListenerManage ...

  7. css 中 position属性

    position属性详解 文档流 1.html中的布局方式分为三种: 标准流(顺序布局):因为html中的元素大体可以分为两大类(a:块级元素:div .H1-H6. table表格  有序级无序列表 ...

  8. aspcms逻辑错误导致后台地址泄露

    访问即可跳转后台地址: URL:http://www.xxx.org.cn/plug/oem/AspCms_OEMFun.asp 注入:plug/comment/commentList.asp?id= ...

  9. Jqgrid pager 关于“local” dataType 动态加载数据分页的研究(没好用的研究结果)

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  10. 【转载】 qml: MouseArea重叠问题;

    原文: https://blog.csdn.net/qq_15024587/article/details/80000443 MouseArea控件大家应该是很熟悉的了.   使用起来也是非常方便的说 ...