這裏能夠參照官方的文檔進行最新的配置(本示例的版本等你看到可能就不是最新的了),可是值得注意的一點是,
GreenDao 3.0
與以前的變化比較大,因此用法也區別比較大,建議在搜索時加上版本號3.0
進行更精細的搜索java
在項目(非Module)的build.gradle
文件中:android
buildscript { repositories { jcenter() mavenCentral() // 添加倉庫地址 } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加greendao插件 } }
在Module級別的 build.gradle
文件中:git
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // 添加插件 dependencies { compile 'org.greenrobot:greendao:3.2.2' // 添加庫 }
參照官方Github鏈接: https://github.com/greenrobot/greenDAO 更改成最新配置(示例爲
3.2.2
)github
android { .... greendao { schemaVersion 1 daoPackage 'com.yourpackagename.greendao.gen' targetGenDir 'src/main/java' //targetGenDirTest:設置生成單元測試目錄 //generateTests:設置自動生成單元測試用例 } ... }
daoPackage 'com.yourpackagename.greendao.gen'
指定greendao自動生成文件的存放路徑,我我的喜歡起名爲greendao.gen
greendao
表示使用的是greendao這個第三方庫
gen
表示自動生成,不要手動更改
前面加上本身的包名,這個實際就是一個路徑。怎麼放按你的習慣和團隊規範。sql
配置完上面的信息後,點擊Sync Now
同步一下工程,而後進行實體的編寫,這個過程長短依託網絡等因素。
注意:
若是同步後沒有生成代碼,最好的方法就是把項目運行一遍!數據庫
/** * Created by didikee on 2017/9/7. */ @Entity public class User { @Id(autoincrement = true) private Long id = null; private Long time; private String name; private Boolean sex; @Generated(hash = 1524850927) public User(Long id, Long time, String name, Boolean sex) { this.id = id; this.time = time; this.name = name; this.sex = sex; } @Generated(hash = 586692638) public User() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public Long getTime() { return this.time; } public void setTime(Long time) { this.time = time; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Boolean getSex() { return this.sex; } public void setSex(Boolean sex) { this.sex = sex; } }
注意點:api
@Entity
註解Long
而不是Long
(這個兩個的區別你們確定知道,容易手誤而已,卻是插入數據崩潰)我習慣寫個統一的類管理各種實體Dao
網絡
/** * Created by didikee on 2017/7/19. */ public class GreenDaoManager { private final static String dbName = "d_db"; private static GreenDaoManager mInstance; private DaoMaster.DevOpenHelper openHelper; private Context context; private GreenDaoManager(Context context) { this.context = context; openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); } /** * 獲取單例引用 * @param context * @return */ public static GreenDaoManager getInstance(Context context) { if (mInstance == null) { synchronized (GreenDaoManager.class) { if (mInstance == null) { mInstance = new GreenDaoManager(context); } } } return mInstance; } public InstaMediaDao getInstaMediaDao() { SQLiteDatabase writableDatabase = openHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(writableDatabase); DaoSession daoSession = daoMaster.newSession(); return daoSession.getInstaMediaDao(); } public UserDao getUserDao() { SQLiteDatabase writableDatabase = openHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(writableDatabase); DaoSession daoSession = daoMaster.newSession(); return daoSession.getUserDao(); } }
使用就比較簡單了,調用對用實體Bean對應的Dao
的方法便可。
例如,查詢:app
GreenDaoManager.getInstance(this).getUserDao().queryRaw(String where, String... selectionArg);
其餘的增刪改查就是api的熟悉問題了,基本上也和sqlite
差很少,習慣就ok了。
網上其餘的教程不少,也可參考。框架