ormlite android studio,OrmLite-android入门体验

入门体验

OrmLite 是一个轻量级的ORM(Object Relational Mapping)数据库工具,方便持久化java对象到数据库

1. 使用准备

使用androidADT创建android项目,如果使用androidStudio,在使用OrmLiteConfigUtil配置时会有麻烦,也可以不配置,后面会有介绍。下载[jar][1]选择ormlite-android和ormlite-core。

2. 创建测试表

OrmLite在每个类的顶部使用@DatabaseTable标识一个表,使用@DatabaseField标识每个字段。需要注意的是OrmLite需要一个空的构造函数。示例如下:

public class SimpleData {

// 设置id自增长

@DatabaseField(generatedId = true)

int id;

@DatabaseField(index = true)

String string;

@DatabaseField

long millis;

@DatabaseField

Date date;

@DatabaseField

boolean even;

SimpleData() {

}

}

3. 实现DatabaseHelper

自定义的DatabaseHelper需要继承OrmLiteSqliteOpenHelper,和继承SQLiteOpenHelper的方法一样,需要实现onCreate和onUpgrade。同时可以提供DAO的get方法方便其他类使用。示例如下:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {

private static final String DATABASE_NAME = "helloAndroid.db";

private static final int DATABASE_VERSION = 1;

private Dao simpleDao = null;

private RuntimeExceptionDao simpleRuntimeDao = null;

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {

try {

Log.i(DatabaseHelper.class.getName(), "onCreate");

TableUtils.createTable(connectionSource, SimpleData.class);

} catch (SQLException e) {

Log.e(DatabaseHelper.class.getName(), "Can't create database", e);

throw new RuntimeException(e);

}

}

@Override

public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) {

try {

Log.i(DatabaseHelper.class.getName(), "onUpgrade");

TableUtils.dropTable(connectionSource, SimpleData.class, true);

onCreate(db, connectionSource);

} catch (SQLException e) {

Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e);

throw new RuntimeException(e);

}

}

public Dao getDao() throws SQLException {

if (simpleDao == null) {

simpleDao = getDao(SimpleData.class);

}

return simpleDao;

}

public RuntimeExceptionDao getSimpleDataDao() {

if (simpleRuntimeDao == null) {

simpleRuntimeDao = getRuntimeExceptionDao(SimpleData.class);

}

return simpleRuntimeDao;

}

@Override

public void close() {

super.close();

simpleDao = null;

simpleRuntimeDao = null;

}

}

如果想提升应用启动速度,减少垃圾回收,那么不使用注解也是可行的,只是需要稍微配置下即可。

1、生成配置文件

实现一个OrmLiteConfigUtil生成ormlite_config.txt文件。需要注意的是,需要使用java方法生成这个配置文件。

public class DatabaseConfigUtil extends OrmLiteConfigUtil {

private static final Class>[] classes = new Class[] {

SimpleData.class,

};

public static void main(String[] args) throws SQLException, IOException {

writeConfigFile("ormlite_config.txt");

}

}

直接右键运行Run As -> Java Application是不可行,需要修改java运行配置。

修改jre为1.5 或1.6。我的是java1.7,因此需要修改

aae7280f6660

20141125184015.jpg

然后在classpath栏删除Android bootstrap

aae7280f6660

20141125184304.jpg

然后在android项目的res目录添加一个空的raw文件夹,执行main方法,控制台显示类似信息,则表示生成成功。

Writing configurations to E:\workspace\androidADT\ORMLite\.\res\raw\ormlite_config.txt

Done.

接着修改DatabaseHelper类的构造函数

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config);

}

配置完成。

4. 使用

官方提供了OrmLiteBaseActivity、OrmLiteBaseListActivity、OrmLiteBaseService等类可以直接继承使用。

public class MainActivity extends OrmLiteBaseActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv = new TextView(this);

doSampleDatabaseStuff("onCreate", tv);

setContentView(tv);

}

private void doSampleDatabaseStuff(String action, TextView tv) {

RuntimeExceptionDao simpleDao = getHelper().getSimpleDataDao();

List list = simpleDao.queryForAll();

//TODO

}

}

但是如果继承ActionBarActivity之类的类,或是自己实现的类。那么在代码的开头需要调用

OpenHelperManager.getHelper(Context context, Class openHelperClass)

在使用完毕释放掉

OpenHelperManager.release()

示例如下:

private DatabaseHelper databaseHelper = null;

@Override

protected void onDestroy() {

super.onDestroy();

if (databaseHelper != null) {

OpenHelperManager.releaseHelper();

databaseHelper = null;

}

}

private DBHelper getHelper() {

if (databaseHelper == null) {

databaseHelper =

OpenHelperManager.getHelper(this, DatabaseHelper.class);

}

return databaseHelper;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值