Android ORM数据库--ActiveAndroid的使用
来源:互联网 发布:网络大电影营销 编辑:程序博客网 时间:2024/06/01 12:00
其实android 中的orm还是很多的:
- ActiveAndroid
- SugarORM
- Siminov
- greenDAO
- ORMLite
- androrm
- cupboard
本篇文章主要介绍一下ActiveAndroid的用法。用过LitePal的同学会发现,这两个框架的用法是如此的相似。
Active Record(活动目录)是Yii、Rails等框架中对ORM实现的典型命名方式。Active Android 帮助你以面向对象的方式来操作SQLite。
配置
首先新建一个android studio项目,加入ActiveAndroid的依赖。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如果你的项目中还没有自定义的Application类,那么可以直接在manifest文件中配置框架中的Application类
- 1
- 2
- 3
- 4
- 5
- 6
- 7
但是如果你项目中已经有了一个自定义的Application类,那么也没有关系。在onCreate方法中完成初始化,在onTerminate方法中完成清理工作。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
在初始化之前可以调用对应函数开启日志
- 1
当然也可以用initialize的重载方法开启。
- 1
然后在清单文件中指定该Application。并在application结点下配置数据库名和数据库版本
- 1
- 2
- 3
- 4
- 5
- 6
当然你也可以在代码中指定,不过建议在清单文件中配置
- 1
- 2
- 3
- 4
- 5
先生成两个实体类,让其继承Model 类,注意,如果要进行CRUD操作的话必须继承Model 类。然后通过@Table注解可以指定表名,@Column注解来指定列名。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
ActiveAndroid默认会查找所有Model的子类,可能会花去很长的时间如果我们有很多子类。为了加快应用的启动速度,我们可以在清单文件中直接指定model类,多个用逗号分隔
- 1
- 2
- 3
当然你也可以在代码中通过Configuration类来指定,不过同样的,还是建议在清单文件中配置
- 1
- 2
- 3
- 4
- 5
- 6
我们看到Category 和 Item是一对多的关系。为了从Category方得到多的Item一方,我们在Category中增加一个方法,
- 1
- 2
- 3
如果你要指定某一列为索引,在对应的注解上加上index = true即可。
数据的保存和修改
接下来,我们来保存一条数据试试看。
- 1
- 2
- 3
用RE查看一下对应的存数据库的目录,打开对应的表,看下数据,确实已经存进去了。
看下实体类,我们并没有id这个属性,为什么表中会有呢,其实这是自动生成的主键。
现在我们来保存几条item
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
看下Item表,其为我们自动生成了外键,指向了之前的category
如果要修改数据的话,对对应的类进行数据操作,调用save方法即可。
事务的支持
当你有大量的数据插入时,这时候就要用到事务,ActiveAndroid也是支持事务的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
数据的删除
根据id删除
- 1
当然你也可以直接调用delete
- 1
- 2
也可以通过Delete类进行操作
- 1
数据的查询
通过Select进行链式调用,更多查询的函数请读者自己体验
- 1
类型序列号
ActiveAndroid 默认支持了很多类型,但是如果你想自定义处理序列化的类型,你也可以继承TypeSerializer 类,重写里面的四个方法即可。
比如我们要将Date类型转换为long类型保存,读取的时候又要转换为Date类型,则可以这样编写。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
当然别忘了在清单文件中注册
- 1
- 2
- 3
同样也可以通过代码注册
- 1
- 2
- 3
- 4
- 5
- 6
- 7
数据库升级
如果需要升级数据库,首先需要增加数据库版本号,必须比之前的大,即增大AA_DB_VERSION 属性。如果增加了新的实体类,它会自动增加到数据库中,但是如果你想改变已经存在的表,比如增加一列,首先你要修改实体类,然后你要在assets目录下创建sql语句的文件,文件名为数据库版本号,后缀是sql,里面写着升级语句,即你增加了什么列等。比如
- 1
将其保持为2.sql,放到assets目录下
使用ContentProvider
ActiveAndroid支持ContentProvider,但是必须复写默认的标识列如下所示(默认标识列是ID)。
- 1
复写后的值是_id
当然不要忘记在清单文件中配置,之后你就可以使用了。
- 1
源码下载
http://download.csdn.net/detail/sbsujjbcy/9026793
相关链接
- https://github.com/codepath/android_guides/wiki/ActiveAndroid-Guide
- Android ORM数据库--ActiveAndroid的使用
- android ORM数据库框架ActiveAndroid的简单使用
- android orm 框架 ActiveAndroid 使用
- Android中ORM数据库轻量级框架---ActiveAndroid
- Android之数据库框架ActiveAndroid的使用
- Android ORM 框架ActiveAndroid
- android ORM之一ActiveAndroid
- Android 使用ActiveAndroid 管理数据库
- 【Android进阶】-Android ORM数据库框架 ActiveAndroid入门
- 玩转Android之数据库框架ActiveAndroid的使用
- ActiveAndroid--Android轻量级ORM框架
- ActiveAndroid--Android轻量级ORM框架
- Android ORM 框架之 ActiveAndroid
- Android ORM系列之ActiveAndroid
- ActiveAndroid--Android轻量级ORM框架
- Android ORM框架之-ActiveAndroid的简单分析
- Android ORM 数据库的使用
- Android ORM 数据库的使用
- 走出一小步
- [新手题]reverse_factorial(python)
- 怎样解题:写题解思考问题的原则
- AR相机的实现
- OpenCV实现Matlab的circshift、fftshift、ifftshift函数
- Android ORM数据库--ActiveAndroid的使用
- HDOJ2_Sum Problem
- java语言基础(97)——匿名内部类实现多线程
- js原生图片轮播
- 如何优化tomcat配置(从内存、并发、缓存)优化
- Gitlab配置ssh连接
- Guard
- 你真的知道Java中boolean类型占用多少个字节吗?
- JavaWeb中cookie的使用