数据存储之ORMlite框架总结
来源:互联网 发布:网络丢包率标准 编辑:程序博客网 时间:2024/06/08 05:36
1.介绍
ormlite 是类似hibernate的对象映射框架,主要面向java语言,具有轻量级、关系持久化等特点,支持着包括mysql,sqlite,和H2等多种的数据库。
作为一个开源的框架,ormlite的源代码、文档以及demo都比较多,版本的迭代更新也很迅速,这都是我们选择它的一个强心针。
官网:http://ormlite.com/
如果需要开发android,只需要下载core和android两个jar包: ormlite-core-4.48.jar ormlite-android-4.48.jar
在用这个框架之前,使用创建数据库以及建表时,都要写好多东西–helper、dao、以及一堆sql语句。时不时的哪里出个错,老恶心了!而ormlite对于android系统sqlite数据库的支持,只需要几行代码,写个公共的管理与泛型接口,就能做完全部操作。
接下来,让我们来看看它到底要怎么用。
#2.使用之旅
首先,先创建一个模型,用来建表
@DatabaseTable(tableName = "Category")public class Category { @DatabaseField(generatedId = true,CanBeNull = false) public int id; @DatabaseField(CanBeNull = true) public String cateName;}
@DatabaseTable 如果默认为类名的话,后面不需要添加类名注释,当然也可以自定义这个表名参数(如“Category”)。
@DatabaseField 用于表中字段的注释,generatedId =true声明id为自增长,也就是主键。CanBeNull 表示该属性列是否可为空。其实除了这两个可注释的属性外,也可以指定类型、长度、是否唯一等属性。
具体如下:
columnName 指定字段名,不指定则变量名作为字段名
canBeNull 字段是否能被分配null值。默认是true。
dataType 指定字段的类型
defaultValue 当我们在表中创建新的记录时的一个字段的默认值。默认情况下是没有这个值的
width 字段的宽度,主要用于字符串字段。默认是0
id 这个字段是否是id,默认是false。在一个class中只有一个成变量可以有这个值。id字段是一条记录的唯一标识而且是必需的,只能在generatedId和 generatedIdSequence其中选一个。
generatedId 字段是否自动增加。默认为false。
generatedIdSequence 序列编号的名字,这个值在生成的时候会被使用。和generatedId相似,但是你能够指定使用的序列名称。默认是没有的。
foreign 指定这个字段的对象是一个外键,外键值是这个对象的id
persisted 指定是否持久化此变量,默认true
foreignAutoCreate 外键不存在时是否自动添加到外键表中
foreignColumnName 外键字段指定的外键表中的哪个字段
表模型建好之后,需要建数据库,创建一个类,继承OrmLiteSqliteOpenHelper。这个类需要实现两个父类方法onCreate() 和onUpgrade(),用于创建和更新数据库。
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Category.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 { TableUtils.dropTable(connectionSource, Category.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e); throw new RuntimeException(e); } } public RuntimeExceptionDao<Category, Integer> getCateDao() { if (cateRuntimeDao == null) { cateRuntimeDao = getRuntimeExceptionDao(Category.class); } return cateRuntimeDao; } @Override public void close() { // close the database,and clear any cached daos super.close(); cateRuntimeDao = null; }
当然你可以在Helper这个类中,获取到所建表的dao,进而对这个表进行管理。
第二步,创建DBManager,用于管理Helper,若是你有多个数据库,为了方便管理以及代码的整洁性,可以先写个IDBManager的接口,去实现,采用泛型数据,对多个数据结构操作。
private DatabaseHelper databaseHelper = OpenHelperManager.getHelper(context,XXHelper.class);
OpenHelperManager是ORMlite框架提供的数据库管理帮助类,直接使用就能获取到我所要管理的辅助类。接着根据辅助类中的getDao()方法来获取数据库访问对象,有了对象,我们就可以直接操作数据库了。
Dao<Catogary,Integer> dao = databaseHelper.getDao(Catogary.classs);Catogary data = new Catogary();dao.create(data);dao.delete(data);dao.update(data);dao.queryForAll();
以上是对ORMLite操作数据库的简单介绍,初步实现增删改查操作。如果你要实现复杂型操作,那就需要用到条件查询,条件删除,条件更新等。
QueryBuilder、UpdateBuilder、DeleteBuilder的使用
废话不多说,直接上代码,基本基础不差的,都能看的懂它怎么用。
QueryBuilder<Article, Integer> queryBuilder = articleDaoOpe.queryBuilder(); Where<Article, Integer> where = queryBuilder.where(); where.eq("user_id", 1). where.and(). where.eq("name", "xxx"); queryBuilder.query();
DeleteBuilder<Article, Integer> deleteBuilder = articleDaoOpe.DeleteBuilder(); Where<Article, Integer> where = deleteBuilder .where(); where.eq("user_id", 1). where.and(). where.eq("XXX", "xxx"); DeleteBuilder.delete();
UpdateBuilder<Article, Integer> updateBuilder = articleDaoOpe.updateBuilder(); Where<Article, Integer> where = updateBuilder .where(); where.eq("user_id", 1). where.and(). where.eq("XXX", "xxx"); updateBuilder .update();
当你要完成一些更复杂的查询时,你需要在where上作文章。
where.or( where.and(where.eq("user_id", 1), where.eq("XXX", "xxx")), where.and(where.eq("user_id", 2), where.eq("XXX", "yyy")));
当然,你要是觉得这样还是麻烦,那我推荐你可以使用sql语句跟参数,直接传入,省的麻烦。
articleDaoOpe.updateRaw(statement, arguments);
以上,主要介绍了ormlite的基本使用与认识。具体的优势跟方便,还需读者自己去深入开发,相信你会爱上它的,真的给程序员带来了福利O(∩_∩)O哈哈~
- 数据存储之ORMlite框架总结
- Android ORM框架之 ORMLite
- ORMLite 使用(网络数据存储到数据库)
- ormlite 框架对数据的版本升级
- 我的Android之旅(二十四)-------数据库ORMLite框架总结
- 【Android - 框架】之ORMLite的使用
- Android框架之ormlite的使用
- Android进阶之数据库框架ormlite使用
- ExtJs框架系列之数据存储Stroe
- Objective-C之Foundation框架--数据存储
- ormlite安卓数据持久化框架的使用
- Android使用OrmLite数据库框架 之 基本用法
- Android使用OrmLite数据库框架 之 使用表配置文件
- Android项目使用ORMLite数据库框架 之 使用数据库配置文件
- 源码探索系列4---数据库ORM框架之Ormlite解析
- Android ORM数据库之OrmLite使用框架及源码分析
- Android ORM框架介绍之OrmLite注解与封装
- Android ORM 框架之 Android中ORMLite应用基础
- openfire 搭建数据库的配置问题
- Sicily周赛 Clock Pictures
- vector是一个十分有用的容器
- Twisted: 用 getPage 完成 POST 操作
- python3嵌入mysql实现简易交互界面
- 数据存储之ORMlite框架总结
- LiteHttp极简且智能的Android HTTP框架
- 3.29 学习状态不佳的反思
- Android手机通过socket与pc通信
- TIdUDPClient控件中文指南
- LeetCode 169: Majority Element
- 正则表达式学习摘录-备忘【乱】
- (8)设计模式:Command
- 欢迎使用CSDN-markdown编辑器