文档章节

玩转Android之数据库框架ActiveAndroid的使用

unibigbear
 unibigbear
发布于 2016/05/16 16:19
字数 1522
阅读 43
收藏 0

ActiveAndroid是一个开源的数据库框架,使我们在Android中使用数据库变得更为简单,今天我们就来看看这个数据库框架的使用。

1、引入ActiveAndroid

首先创建我们自己的项目,在我们的项目中引入ActiveAndroid,引入ActiveAndroid需要我们修改两个地方,一个全局gradle文件,还有一个是局部gradle文件,修改方式如下:

全局gradle文件,在jcenter()下方添加如下代码:

 

局部gradle文件修改:

 

2、创建表及数据库

2.1. 表的创建

将ActiveAndroid引入到我们的项目中后,我们就可以开始使用这个东东了,如果大家使用Java中的hibernate数据库框架,就会觉得ActiveAndroid很简单了。在这里我们需要写一个类继承自Model这个类,如下:

 


 

这里有几个地方需要解释一下:

1.类名上的@Table注解中有两个值,分别是name="user_table"以及id="_id",其中name="user_table"表示一会生成的表的名称为user_table,不写的话默认为实体类的名称,id="_id"表示表的id字段的名称,默认为Id,但是我们在Android开发中一般将表中的id字段名称定义为_id,所以这里设置id="_id"

2.在每一个属性名的上方都有一个@Column注解,该注解表示该字段是表中的一个字段,不加这个注解表示该字段不是表中的字段。

 

2.2. 数据库名称的修改以及版本的配置

默认情况下创建的数据库名称为Application.db,如果我们需要修改数据库名称以及进行版本管理需要在清单文件中添加如下节点:

 

 

其中AA_DB_NAME表示数据库的名称,AA_DB_VERSION表示数据库的版本号,做android开发的筒子们都知道版本号对于一个数据来说非常重要,数据库的版本升级离不开版本号。

 

 

2.3.数据库升级以及表的修改

使用ActiveAndroid进行数据库升级稍微有一点点麻烦(个人觉得),假设我需要给数据库中的表添加一个字段该怎么做呢?有以下三个步骤:

1. 首先我需要修改我在上面定义的实体类,假设我想在添加一个性别字段,那我需要修改实体类如下:

 

 

2. 在清单文件中修改数据库的版本号,新的版本号是原版本号加1,比如原来的版本号是1,那我现在改为2。

3.添加迁移脚本,最后我还需要添加一个数据库迁移脚本。在我项目的assets文件夹中添加一个子文件夹叫做migrations,在这个字文件夹中添加迁移脚本,脚本的名称为当前数据库最新版本号.sql,假设我最新的数据库版本号为2,那么我的迁移脚本的名称就为2.sql。针对我上面数据库升级的情况(添加一个字段),我的迁移脚本内容如下:

 

 

OK,完成以上三步,我的新字段就可以成功的添加到我的表中了。

3、增删该查

完成以上步骤之后,接下来我们就可以来看看数据库中的增删改查操作了。

 

3.1、增

添加数据太easy了,我只需要new一个实体类出来,然后调用这个实体类的save方法即可,咦,我的实体类哪来的save方法呢?别忘了,我的实体类继承自Model类哦。OK,那我们来看一个简单的插入操作:

 

 

 

创建一个UserEntity的实例,然后调用该实例的save方法即可。然后我们来看看数据库:

 

 

OK,数据已经添加到表中了。当然,这个save方法有一个返回值,这个返回值表示当前插入的数据的id。

 

3.2、删

针对删除操作,ActiveAndroid提供了两种解决方案,一种是已知id,用户需要按id对数据进行删除,如下:

 

 

表示删除_id为4的数据。

第二种删除方式:

 

 

表示删除age=89并且nickname=李四的数据,当然还有各种左连接右连接ActiveAndroid也都是支持的。

 

3.3、改

 

 

修改也是很简单的,上面这两行代码表示将age为89的数据中的nickname改为王五。这里不支持and语句,如果筒子们有多个查询条件可以一起放在where语句中执行,如下:

 

 

 

3.4、查

 

 

上面代码表示查询user_table表中所有的数据,查询结果直接返回一个List集合。我们可以直接遍历这个List集合并将其显示出来。查询条件也支持where以及各种左连接,右连接分页查询等。如下:

 

 

4、优势与劣势

整体上来说,ActiveAndroid还是很好用的,极大的方便了我们的数据库操作,简化了代码操作,加上ActiveAndroid对版本升级较完美的支持,使得它更加的灵活。

但是大家也知道,这种框架之所以方便是在牺牲一部分性能的条件下获得的,执行效率肯定不如我们自己写的CRUD语句,所以筒子们在工作中要根据自己的实际情况来选择是否用该框架。

 

 

由于上传附件及文字限制,部分图片、文字显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000360&idx=3&sn=529513e826de47788a6cc9bd714d06e5#rd

欢迎大家一起交流。

扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)

关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!

也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!

本文转载自:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000360&idx=3&sn=529513e826de47788a6cc9bd7...

共有 人打赏支持
unibigbear
粉丝 1
博文 70
码字总数 5874
作品 0
闵行
ActiveAndroid--Android轻量级ORM框架

源博客链接:http://linkyan.com/2013/05/about-activeandroid/ Github:ActiveAndroid ActiveAndroid算是一个轻量级的ORM框架,简单地通过如save()和delete()等方法来做到增删改查等操作。配...

正经点
2013/06/13
0
9
ORM轻量级框架---ActiveAndroid

ORM即Object-Relational Mapping,对象关系映射。简单理解就是把我们Java的对象与数据库里面的记录进行映射,可以把实体对象持久化到数据库中,也能把查询到的记录映射成Java对象。ORM让我们...

Jack_1900
2014/07/29
0
0
android orm sqlite

http://satyan.github.io/sugar/ 不错,就是文档太恶心鸟 http://greendao-orm.com/features/ http://greendao-orm.com/documentation/how-to-get-started/ 还是greenDao吧。 相比greenDao用......

塔塔米
2015/01/27
0
0
记录一下自己设计的HappyTime软件

软件开发设计思路:是分清需要功能点,然后分成各个模块,进行模块开发,最后集成到一个框架里面 技术要点: 框架采用环信SDK 数据关系映射采用ActiveAndroid 3. 数据下载采用Volley实现异步...

鹭明
06/26
0
0
Android实现微信自动抢红包

Android实现微信自动抢红包 简介 本文介绍微信自动抢红包的实现方法,主要实现以下几个功能: 自动拆开屏幕上出现的红包 处于桌面或聊天列表时接收到红包信息时自动进入聊天界面并拆红包 日志...

oden
2016/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

活动招募 HUAWEI HiAI公开课·北京站-如何在4小时把你的APP变身AI应用

人工智能和机器学习是全球关注的新趋势,也是当前最火爆、最流行的话题。当你拿手机用语音助手帮你点外卖,智能推荐帮你把周边美食一网打尽;当你拿起P20拍照时,它将自动识别场景进行最美优...

华为终端开放实验室
13分钟前
0
0
匹配两位小数,js正则

var regex = /^\d*(\.[1-9]|\.\d[1-9])*$/ console.log(1.2,regex.test(1.2)); console.log(0.3,regex.test(0.3)); console.log(1.03,regex.test(1.03)); ......

微信小程序-暗潮
17分钟前
0
0
905. Sort Array By Parity - LeetCode

Question 905. Sort Array By Parity Solution 题目大意:数组排序,偶数放前,奇数在后,偶数的数之间不用管顺序,奇数的数之间也不用管顺序 思路:建两个list,一个放偶数,一个放奇数,最...

yysue
22分钟前
0
0
h5 禁止手机自带键盘弹出

html: <div style="width: 350px;margin:50px auto;"><input type="text" id="datePicker" class="date_picker form-control" placeholder="点击选择入住日期" /></div> js: $("#date......

Delete90
39分钟前
1
0
color透明度对照表

透明度百分比 数值 100% 不透明 FF 95% F2 90% E6 85% D9 80% CC 75% BF 70% B3 65% A6 60% 99 55% 8C 50% 80 45% 73 40% 66 35% 59 30% 4D 25% 40 20% 33 15% 26 10% 1A 5% 0D 0% 完全透明 ......

_无问西东
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部