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)。
 
方法说明:
相关文章
相关标签/搜索