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,因此需要修改
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入门体验相关推荐
- Android Studio和Kotlin入门
Welcome to the series of tutorials on Android Development with Kotlin. This series is designed with ...
- Android Studio 教程:入门开发第一个程序
Android Studio 教程:入门开发第一个程序 2018.09.11 14:30 16005浏览 开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a ...
- 使用Android Studio搭建Android集成开发环境
一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...
- android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...
环境:操作系统是Mac,模拟器 问题:Android Studio中Android Device Monitor中的File Explore不显示文件 本人在自学文件存储,想查看"dada/ ...
- Android开发工具Android Studio、Android SDK和Genymotion完全配置
所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...
- 在Android Studio中将Android工程变为Library使用
在Android Studio中将Android工程变为Library使用 转载2016-03-28 10:43:58 有时候网上会有些工程格式不是我们想要的Library格式可以直接给AS使用.这时 ...
- android studio - 解决Android Studio不停的Indexing的问题
android studio - 解决Android Studio不停的Indexing的问题 参考文章: (1)android studio - 解决Android Studio不停的Indexin ...
- 在Mac上使用android studio调试android手机
一.环境准备 1.安卓手机:Android版本为9 2.MacBook Pro 3.安卓数据线 二.adb介绍 1.adb概念 adb:全称是Android Debug Bridge,意思是Andro ...
- 【Android Studio】Android Studio 搭建开发环境(Linux Ubuntu篇)
Windows篇:[Android Studio]Android Studio 搭建开发环境(Windows篇)_dandelionela的博客-CSDN博客 Ubuntu篇参考: Ubuntu 18 ...
- Android Studio 提示android.support.v4不存在的解决方法
Android Studio 提示android.support.v4不存在的解决方法 参考文章: (1)Android Studio 提示android.support.v4不存在的解决方法 (2) ...
最新文章
- 中文乱码,也许这个小技巧可以帮到你
- python爬虫赚钱的经历-十年真ㆍPython大佬用爬虫赚钱的自述!看完学到了!
- Java中 String的反转
- Android六边形图像
- Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll
- [MySQL] - 返回影响行数
- 挂接CreateProcessW实现对进程创建的完全控制
- vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...
- Golang 任意类型切片的增删改查
- 大神总结的机器学习的数学基础,掌握这些足够
- Hibernate查询用法总结
- 史玉柱:我是怎么做游戏策划的
- python对电影进行预测评分_TMDb电影数据分析 电影评分预测
- navicat8注册码
- 分享hm77芯片组bios工具 联想m490添加inter7265ac 白名单bios
- 05.第六章、进度管理
- OSPF和ISIS协议的异同
- 微信支付商户号申请详细流程介绍
- 计算机视觉数据集大全 - Part1
- 计算机不识别lacie硬盘,windows10系统下移动硬盘读不出来的三种解决方案
热门文章
- 简单理解浏览器的event loop 和 JavaScript的同步异步
- 第1章统计学习方法概论之1.1统计学习
- Symfony 使用 hwi/oauth-bundle 实现第三方登录
- SSH:Oracle数据库基础
- 容器LinkedList原理(学习)
- 碰到故障大全---cd
- mongodb log ,warning: chunk is larger than 65203623200 bytes because of key
- MOOON-server新消息处理接口
- python fun
- xpath定位元素方法_测试数十次,总结了APP元素定位的万能方法