才來(lái)公司上班尺栖,需求少嫡纠!時(shí)間充裕些,所以尋思把項(xiàng)目使用第三方升級(jí)一下延赌!首先是GreenDao
在greendao2.1時(shí)代除盏,我們需要在build.gradle中添加以下依賴:
compile 'de.greenrobot:greendao:2.1.0'
然后新建module,并在module中build.gradle添加greendao生成器
????????? compile 'de.greenrobot:greendao-generator:2.1.0'
然后新建自己的generator生成器類挫以!例如:
public class MainDaoGenerator {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "放置生成文件的包名");//
addTeacher(schema);
addUser(schema);//用戶表
addFile(schema);
addSchedule(schema);
addTeacherCourse(schema);
addTeacherClassRoom(schema);
new DaoGenerator().generateAll(schema, "放置生成文件的位置");
}
每次要新建實(shí)體類的時(shí)候直接添加者蠕,最后選中這個(gè)類右鍵? 選擇run生成相對(duì)應(yīng)的bean 、beanDao!
最后我們?cè)谛陆―BHelper幫助類掐松,取得DaoMaster
public static DaoMaster getDaoMaster(Context context) {
if (daoMaster == null) {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "my_db.db", null);
daoMaster = new DaoMaster(helper.getWritableDatabase());
}
return daoMaster;
}
?取得DaoSession
public static DaoSession getDaoSession(Context context) {
if (daoSession == null) {
if (daoMaster == null) {
daoMaster = getDaoMaster(context);
}
daoSession = daoMaster.newSession();
}
return daoSession;
}
初始化我們greendao
public static void init(Context context) {
mContext = context;
instance = new DBHelper();
// 數(shù)據(jù)庫(kù)對(duì)象
daoSession = getDaoSession(mContext);
}
在application中初始化
public void onCreate() {
super.onCreate();
Logger.init("my");
DBHelper.init(getApplicationContext());
}
在這個(gè)BDHelper編寫增刪查改方法就OK蠢棱!
升級(jí)到3.2锌杀!使用的方法就多了一種
首先就是替換module中的
compile 'de.greenrobot:greendao-generator:2.1.0'
換成
compile 'org.greenrobot:greendao-generator:3.2.0'
同步后在類中替換導(dǎo)入greendao的新包名!編譯后運(yùn)行生成新的注解
最后再主工程build.gradle中替換成
compile 'org.greenrobot:greendao:3.2.0'
從新替換導(dǎo)入greendao的包名泻仙,最后重新編譯project糕再,
至此升級(jí)可以算是完成了!
但是在greendao3.2中推薦使用以下插件
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
有了我們就可以不使用generator了玉转,
使用步揍突想,按照官方的:
在build.gradle中添加依賴
apply plugin:'org.greenrobot.greendao'
compile 'org.greenrobot:greendao-generator:3.2.0'
android{
......
//greendao配置
greendao {
schemaVersion 1? ? ? ? ? ? ? ? ? ? ? ? ? ? //版本號(hào),升級(jí)時(shí)可配置
//? ? ? ? daoPackage'com.example.admin.mydaggerdemo.dao'? ? //包名
//? ? ? ? targetGenDir'src/main/java'? ? ? ? ? ? ? ? //生成目錄
}
greendao默認(rèn)目錄在build-->generated-->source-->greendao中究抓!
........
}
在主project的build.gradle中添加
buildscript {
repositories {
jcenter()
}
dependencies {
.....
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
然后我們編寫我們需要的實(shí)體類猾担,并在實(shí)體中加入注解@Entity!在隨意寫入某些屬性
@Entitypublic class Test {? ? ?
@Id? private int id;
}
直接運(yùn)行project就OK刺下,就能自動(dòng)生成beanDao,并補(bǔ)齊bean!這樣加入插件绑嘹,就可以省去使用genreator了,并且可以學(xué)到新的注解姿勢(shì)橘茉!
注解:
@Entity?? 標(biāo)識(shí)實(shí)體類工腋,greenDAO會(huì)映射成sqlite的一個(gè)表,表名為實(shí)體類名的大寫形式
@Id 標(biāo)識(shí)主鍵畅卓,該字段的類型為long或Long類型擅腰,autoincrement設(shè)置是否自動(dòng)增長(zhǎng)
@Property?????? 標(biāo)識(shí)該屬性在表中對(duì)應(yīng)的列名稱, nameInDb設(shè)置名稱
@Transient????? 標(biāo)識(shí)該屬性將不會(huì)映射到表中,也就是沒有這列
@NotNull???????? 設(shè)置表中當(dāng)前列的值不可為空
@Convert???????? 指定自定義類型(@linkPropertyConverter)
@Generated?? greenDAO運(yùn)行所產(chǎn)生的構(gòu)造函數(shù)或者方法翁潘,被此標(biāo)注的代碼可以變更或者下次運(yùn)行時(shí)清除
@Index??? 使用@Index作為一個(gè)屬性來(lái)創(chuàng)建一個(gè)索引趁冈;定義多列索引(@link Entity#indexes())
@JoinEntity???? 定義表連接關(guān)系
@JoinProperty???????? 定義名稱和引用名稱屬性關(guān)系
@Keep???? 注解的代碼段在GreenDao下次運(yùn)行時(shí)保持不變
1.注解實(shí)體類:默認(rèn)禁止修改此類
2.注解其他代碼段,默認(rèn)禁止修改注解的代碼段
@OrderBy??????? 指定排序
@ToMany???????? 定義與多個(gè)實(shí)體對(duì)象的關(guān)系
@ToOne? 定義與另一個(gè)實(shí)體(一個(gè)實(shí)體對(duì)象)的關(guān)系
@Unique 向數(shù)據(jù)庫(kù)列添加了一個(gè)唯一的約束
記錄完成整個(gè)greendao升級(jí)過程拜马,及學(xué)習(xí)新的使用渗勘!由于使用GreenDao畢竟時(shí)間不長(zhǎng),肯定有很多不足的地方俩莽!歡迎大神們敲磚呀邢!