android ORM框架ORMLite封裝

源碼:http://download.csdn.net/detail/a924571572/9415506java

1、框架效率對比android

 

因爲目前公司裏面android端數據的數據量基本在千條之內,因此選擇了更爲靈活方便的ORMLite做爲項目中的數據庫模塊框架而且在ORMLite框架的基礎上對數據操做及後續的數據庫版本更新操做進行了封裝
 
 
2、ORMLite  ARUD封裝
 
一、工程項目結構
 
 
(1)bean:存放與數據表對應的實體類對象;
 
     由用戶本身建立,在實體類中使用註解的形式與數據表對應起來。
 
     舉例:類名上使用@DatabaseTable(tableName=」」)可指定表建立時的表名;
         屬性上使用@DatabaseField(columnName=」」|generatedId=true|foreign=true|foreignColumnName=」」)分別可指定表中字段名、該字段是否爲主鍵、是否爲外鍵、關聯表的外鍵名;
 
(2)dao:存放DaoUtils工具類,返回不一樣表對象的操做對象,實現對數據表的增刪改查等操做,  用戶可直接調用,若需擴展可自行繼承實現;
 
     舉例:
 
    可直接在程序中經過new DaoUtils對象的方式調用,傳入的參數1爲SqliteOpenHelper及其子類對象,參數2爲數據表對應的類對象;對不一樣數據表進行增刪改查操做可以使用數據表對應的DaoUtils對象調用增刪改查方法實現
 
(3)helper:存放DatabaseHelper 數據庫操做類,
     DatabaseHelper繼承自OrmLiteSqliteOpenHelper,
     封裝了數據庫的建立、更新、建表等數據庫相關操做;
     用戶使用時需繼承後重寫onCreate()、  onUpdate()及帶參數的構造方法;
舉例:
onCreate():中需調用父類的onCreate()方法完成數據庫及表結構的建立;
onUpgrade():中可選擇調用父類的updateNewTable()方法,在表結構須要進行較大更改時將原有數據表刪除後從新添加;也可自行添加數據表字段修改的代碼進行表結構的更新。
構造函數:父類須要的參數爲DatabaseHelper(Context context ,String  DATABASE_NAME, CursorFactory  factory,int  DATABASE_VERSION, List<Class>  tableClass)
                  context:上下文對象    DATABASE_NAME:數據庫名稱
                  factory:遊標工廠    DATABASE_VERSION:數據庫版本號
                  tableClass:數據表對應的類對象集合
 
(4)utils:存放數據庫操做工具類DatabaseUtils,用於實現數據庫的備份、恢復及改變數據庫文件默認存儲位置三個功能。
 
二、DaoUtils類方法說明
 
 
 
3、數據庫備份及恢復封裝
一、操做說明:
(1)初始化DataBaseUtils類對象,需傳入一個參數:Context context:當前上下文對象
     使用舉例:DataBaseUtils bru= new DataBaseUtils(MainActivity.this);
(2)進行數據備份操做:調用DataBaseUtils對象的doDataBackUp(String DB_PATH, String DB_BACKUP_PATH, MessageShow ms)方法。
   
使用舉例:
bru.doDataBackUp(DATABASE_PATH, DB_BACKUP_PATH,
new DataBaseUtils.MessageShow() {
@Override
public void onPepare() {
Toast.makeText(MainActivity.this, "數據庫備份中!", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "數據庫備份成功!", Toast.LENGTH_LONG).show();
}
 
@Override
public void onFail() {
Toast.makeText(MainActivity.this, "數據庫備份失敗!", Toast.LENGTH_LONG).show();
}
});
 

 (3)進行數據恢復操做:調用DataBaseUtils對象的doDataRecover(String DB_PATH, String DB_BACKUP_PATH, MessageShow ms)方法。數據庫

使用舉例:
bru.doDataRecover(DATABASE_PATH, DB_BACKUP_PATH,
new DataBaseUtils.MessageShow() {
@Override
public void onPepare() {
Toast.makeText(MainActivity.this, "數據庫恢復中!", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "數據庫恢復成功!", Toast.LENGTH_LONG).show();
}
@Override
public void onFail() {
Toast.makeText(MainActivity.this, "數據庫恢復失敗!", Toast.LENGTH_LONG).show();
}
});

 

四、進行設置數據庫建立位置操做:調用DataBaseUtils對象的setDatabasePath(DatabaseHelper helper,String DATABASE_PATH,int newVersionCode)方法。  
   由於ORMLite框架默認是在系統的data\data目錄下建立數據庫的,而實際項目中須要將數據庫建立在內存卡上,以防應用卸載後數據庫文件的丟失。因此添加了更改數據庫建立地址的方法以知足更多操做的須要。 可是更改了數據庫的建立地址後,在以後的版本更新操做時須要更改此方法中的數據庫版本號而不是DatabaseHelper中的版本號來實現數據庫版本的升級後續操做。
使用舉例:
DATABASE_PATH= Environment.getExternalStorageDirectory() + "/kktest.db";
 
MyDatabaseHelper helper = new MyDatabaseHelper(MainActivity.this,
DATABASE_PATH);
 
DataBaseUtils bru=new DataBaseUtils(MainActivity.this);
 
int dataBaseVersion=1;
 
bru.setDatabasePath(helper, DATABASE_PATH, dataBaseVersion);
 
五、API
 
 
 
4、基於ORMLite的數據庫持續更新
 
實現項目版本迭代過程當中數據庫結構的自動不斷更新操做,知足各項目根據版本需求在數據庫表中自動新增數據表、新增字段以及更改字段需求。
 
一、實現過程
背景:項目中使用ORMLite框架實現數據庫相關操做;
          ORMLite框架中使用註解將每一個實體類對象與數據庫中數據表關聯起來,類中使用註解的屬性與數據表中字段對應。
           在項目中自定義數據庫文件的建立地址。
          自定義數據庫建立地址方法:(必須在程序啓動時調用)
               在程序啓動入口處的application或activity中加入如下代碼:
                DataBaseUtils bru =new DataBaseUtils(MainActivity.this);
                MyDatabaseHelper helper= new MyDatabaseHelper(
                MainActivity.this,DATABASE_PATH);
                bru.setDatabasePath(helper, DATABASE_PATH,versionCode);
                指定數據庫建立的位置及當前數據庫版本號,當數據庫版本發生變化時,需更改此處的版本號。
 
          因爲在DatabaseHelper基類中重寫了getWritableDatabase()、getReadableDatabase()方法,在數據庫建立及更新時將不會自動調用onCreate()及onUpgrade ()方法,此時須要在程序啓動時的application或activity中調用setDatabasePath方法指定數據庫保存位置在此方法中實現onCreate()及onUpgrade ()方法的調用。
 
二、數據庫版本更新原理
(1)、數據庫初始建立
(2)當數據庫進行版本升級需新增數據表或添加/修改字段 
 
三、使用說明
使用流程:
繼承DatabaseHelper類,重寫onCreate(),onUpgrade()方法,
(1)在onCreate()方法中調用父類createTable(ConnectionSource arg1, List<Class> tableClass)方法,建立數據表。
         ConnectionSource arg1 爲數據源對象
         List<Class> tableClass爲實體類對象集合
(2)在onUpdate()方法中調用父類updateTable(SQLiteDatabase database,ConnectionSource connectionSource, List<Class<T>> tableClass)方法,版本更新時,傳入修改過的實體對象     集合List<Class<T>> tableClass。
         SQLiteDatabase database爲數據庫對象
         ConnectionSource connectionSource爲數據源對象
         List<Class<T>> tableClass 爲須要更新的實體對象/新增的實體對象集合
(3)在程序啓動的入口處調用DataBaseUtils中的setDatabasePath(DatabaseHelper helper,String DATABASE_PATH,int newVersionCode)方法,版本更新時傳入新版本號int   newVersionCode(建立時設爲1)。
 
方法說明:
相關文章
相關標籤/搜索