入门体验

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,因此需要修改

20141125184015.jpg

然后在classpath栏删除Android bootstrap

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;

}

ormlite android studio,OrmLite-android入门体验相关推荐

  1. Android Studio和Kotlin入门

    Welcome to the series of tutorials on Android Development with Kotlin. This series is designed with ...

  2. Android Studio 教程:入门开发第一个程序

    Android Studio 教程:入门开发第一个程序 2018.09.11 14:30 16005浏览 开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a ...

  3. 使用Android Studio搭建Android集成开发环境

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...

  4. android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...

    环境:操作系统是Mac,模拟器 问题:Android Studio中Android Device Monitor中的File Explore不显示文件 本人在自学文件存储,想查看"dada/ ...

  5. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...

  6. 在Android Studio中将Android工程变为Library使用

    在Android Studio中将Android工程变为Library使用 转载2016-03-28 10:43:58 有时候网上会有些工程格式不是我们想要的Library格式可以直接给AS使用.这时 ...

  7. android studio - 解决Android Studio不停的Indexing的问题

    android studio - 解决Android Studio不停的Indexing的问题 参考文章: (1)android studio - 解决Android Studio不停的Indexin ...

  8. 在Mac上使用android studio调试android手机

    一.环境准备 1.安卓手机:Android版本为9 2.MacBook Pro 3.安卓数据线 二.adb介绍 1.adb概念 adb:全称是Android Debug Bridge,意思是Andro ...

  9. 【Android Studio】Android Studio 搭建开发环境(Linux Ubuntu篇)

    Windows篇:[Android Studio]Android Studio 搭建开发环境(Windows篇)_dandelionela的博客-CSDN博客 Ubuntu篇参考: Ubuntu 18 ...

  10. Android Studio 提示android.support.v4不存在的解决方法

    Android Studio 提示android.support.v4不存在的解决方法 参考文章: (1)Android Studio 提示android.support.v4不存在的解决方法 (2) ...

最新文章

  1. 中文乱码,也许这个小技巧可以帮到你
  2. python爬虫赚钱的经历-十年真ㆍPython大佬用爬虫赚钱的自述!看完学到了!
  3. Java中 String的反转
  4. Android六边形图像
  5. Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll
  6. [MySQL] - 返回影响行数
  7. 挂接CreateProcessW实现对进程创建的完全控制
  8. vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...
  9. Golang 任意类型切片的增删改查
  10. 大神总结的机器学习的数学基础,掌握这些足够
  11. Hibernate查询用法总结
  12. 史玉柱:我是怎么做游戏策划的
  13. python对电影进行预测评分_TMDb电影数据分析 电影评分预测
  14. navicat8注册码
  15. 分享hm77芯片组bios工具 联想m490添加inter7265ac 白名单bios
  16. 05.第六章、进度管理
  17. OSPF和ISIS协议的异同
  18. 微信支付商户号申请详细流程介绍
  19. 计算机视觉数据集大全 - Part1
  20. 计算机不识别lacie硬盘,windows10系统下移动硬盘读不出来的三种解决方案

热门文章

  1. 简单理解浏览器的event loop 和 JavaScript的同步异步
  2. 第1章统计学习方法概论之1.1统计学习
  3. Symfony 使用 hwi/oauth-bundle 实现第三方登录
  4. SSH:Oracle数据库基础
  5. 容器LinkedList原理(学习)
  6. 碰到故障大全---cd
  7. mongodb log ,warning: chunk is larger than 65203623200 bytes because of key
  8. MOOON-server新消息处理接口
  9. python fun
  10. xpath定位元素方法_测试数十次,总结了APP元素定位的万能方法