GreenDao簡介

一、使用步驟

1.導入三個jar包,greendao.jar、greendao-generator.jar、freemarker.jar(鏈接地址)。

2.新建一個Java類GenerateDao,運行以下代碼:

public class GenerateDao {
public static void main(String[] args) throws Exception {
int version = 1; //數據庫的版本號,用來更新數據庫
 String defaultJavaPackage = "com.wen.greendaodemo.db"; //GreenDao生成的類所在包路徑,最好寫成“包名+目錄名”
 String outDir = "../GreenDaoDemo/app/src/main/java"; //外部路徑
 Schema schema = new Schema(version, defaultJavaPackage); //創建Schema
 addPerson(schema); //在Schema中添加實體
 new DaoGenerator().generateAll(schema, outDir); //outDir+defaultJavaPackage目錄下自動生成GreenDao需要的代碼DaoMaster、DaoSession、XX實體類以及XXDao。

 }

public static void addPerson(Schema schema) {
Entity entity = schema.addEntity("Person"); //此處會生成實體類,所以命名的時候建議使用駝峯規則。並會將其映射成對應的表。
 entity.addIdProperty().autoincrement().primaryKey().unique();
 entity.addStringProperty("name");
 }

}
3.新建數據庫並往其中添加數據:

public class MainActivity extends Activity {

private SQLiteDatabase writableDatabase;
 private DaoMaster daoMaster;
 private DaoSession daoSession;
 private PersonDao personDao;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 createDataBase();

 initDataBase();

 addPerson();

 }

/**
 * 第一次執行的時候會創建數據庫
 */
 private void createDataBase() {
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "wen", null); //傳入數據庫的名字
 writableDatabase = devOpenHelper.getWritableDatabase(); //第一次執行的時候會在此處創建數據庫
 }

/**
 * 初始化數據庫的常用參數 daoMaster、daoSession以及xxxDao
 */
 private void initDataBase() {
daoMaster = new DaoMaster(writableDatabase);
 daoSession = daoMaster.newSession();
 personDao = daoSession.getPersonDao();
 }

/**
 * 增
 */
 private void addPerson() {
for (int i = 0; i < 10; i++) {
Person person = new Person(); //每次都要new一個,否則會報primary key not unique異常
 person.setName("zbw" + i);
 personDao.insert(person);
 }
}

}
4.刪、改、查的使用:

/**
 * 刪
 */
private void deletePerson() {
personDao.deleteByKey(1L); //傳入的爲Id
}

/**
 * 改
 */
private void updatePerson() {
Person person = new Person();
 person.setName("zbw update");
 person.setId(2L);
 personDao.update(person);
}

/**
 * 查
 */
private void queryPerson() {
List<Person> personList = personDao.queryBuilder().where(PersonDao.Properties.Name.eq("zbw2")).list();
 for(Person person : personList) {
Log.e("zbw",""+person.getId() + person.getName());
 }
}
二、數據庫升級

    由於GreenDao默認升級會刪除所有表並重新創建所有表,所以每次升級數據庫都需要重新修改upgrade()方法,升級可以按以下步驟進行修改:

1.升級的時候修改版本號;
2.重新生成代碼;
3.新建一個數據庫升級的輔助類,代碼如下:
public class DBUpgradeHelper {
    public static void upgradeDB(SQLiteDatabase db, int oldVersion, int newVersion) {
        int currentVersion = oldVersion;
        while (currentVersion <= newVersion){
            upgradeByVersion(db , currentVersion);
            currentVersion++;
        }
    }

    private static void upgradeByVersion(SQLiteDatabase db, int currentVersion) {
        switch (currentVersion){
            case 1:
                upgradeDB1To2(db);
                break;
            case 2:
                upgradeDB2To3(db);
                break;
        }
    }

    private static void upgradeDB1To2(SQLiteDatabase db) {
        //創建新表或者更新表結構
    }

    private static void upgradeDB2To3(SQLiteDatabase db) {
        //創建新表或者更新表結構
    }
}

4.在DevOpenHelper的onUpgrade()方法中調用上面代碼的upgradeDB()方法,並在對應的位置寫下修改數據庫的語句。
    上面就是使用GreenDao最基本的一些知識,我想大家知道了這些基本方法之後在進行GreenDao其他方面的學習就輕鬆多了。














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章