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"