1. 程式人生 > >Android GreenDao使用教程

Android GreenDao使用教程

extends image mda 自動 所有 andro 沒有 lac cat

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();
   }

Android GreenDao使用教程