android ORM 框架 ORMLite 封装

阅读 812
收藏 39
2017-03-11
原文链接:www.cnblogs.com

源码:download.csdn.net/detail/a924…

一、框架效率对比

 

由于目前公司里面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)。   方法说明:
评论