android ORM框架ORMLite封裝


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

一、框架效率對比

 

由於目前公司里面android端數據的數據量基本在千條以內,所以選擇了更為靈活方便的ORMLite作為項目中的數據庫模塊框架並且在ORMLite框架的基礎上對數據操作及后續的數據庫版本更新操作進行了封裝
 
 
二、ORMLite  ARUD封裝
 
1、工程項目結構
 
 
(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,用於實現數據庫的備份、恢復及改變數據庫文件默認存儲位置三個功能。
 
2、DaoUtils類方法說明
 
 
 
三、數據庫備份及恢復封裝
1、操作說明:
(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();
}
});

 

4、進行設置數據庫創建位置操作:調用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);
 
5、API
 
 
 
四、基於ORMLite的數據庫持續更新
 
實現項目版本迭代過程中數據庫結構的自動不斷更新操作,滿足各項目根據版本需求在數據庫表中自動新增數據表、新增字段以及更改字段需求。
 
1、實現過程
背景:項目中使用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 ()方法的調用。
 
2、數據庫版本更新原理
(1)、數據庫初始創建
(2)當數據庫進行版本升級需新增數據表或添加/修改字段 
 
3、使用說明
使用流程:
繼承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)。
 
方法說明:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM