开源数据库 LitePal 学习,强大好使的 CRUD
来源:互联网 发布:淘宝卖家店铺id怎么看 编辑:程序博客网 时间:2024/06/05 03:35
LitePal 简介
LitePal 是一款开源的 Android 数据库框架,它采用了对象关系映射(ORM)的模式,将我们平时使用的一些数据库(比如 Sqlite)功能进行了封装。
配置
第一步
和我们平时使用开源库一样,在项目的 build.gradle 文件下的 dependencies 闭包中添加依赖:
- 1
- 1
第二步
需要配置 litepal.xml 文件,在 app/src/main 目录右键 -> New -> Directory , 创建一个 assets 目录,在该目录下新建一个 litepal.xml 文件,编辑内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
说明:这里的 标签用于指定数据库名, 标签用于指定数据库版本号, 标签用于指定所有的映射模型。
第三步
配置 LitePalApplication
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
验证、创建以及升级数据库
经过上面的步骤已经将 LitePal 配置完成,那么现在就通过创建表来验证一下。
验证和创建
新建一个 AndDev 类:
- 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
- 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
说明:大家肯定都很熟悉,这就是一个 JavaBean ,定义了几个属性,也就是我们的表 AndDev 中有这些字段。
建好了表之后,接下来还需要将它添加到我们的模型列表中:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
现在我们就可以测试了,启动一个 Activity ,我这里只添加了一个按钮,在其点击事件下写下面一句代码:
- 1
- 1
运行程序,点击按钮,然后打开 android Device Monitor 查看结果如下:
可见我们的数据库确实创建成功了,接下来我们查看表是否创建成功,点击上图中的导出图标 ,然后利用 SQLite 打开数据库(也可以通过命令行方式查看),如下图:
这就证明我们的数据库和表都创建成功了。
升级
就在我们刚刚创建的 AndDev 表里面再增加一个 city(城市)列,只需在 AndDev 中添加 city 字段,设置 getter 和 setter 方法即可(代码自己添加);索性我们再添加一张表,名为 Category ,代码如下:
- 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
- 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
我们还需要做最后一步操作,需要将我们的对象和关系型数据库建立关系:
说明:可以看到这段代码相比之前修改了两个地方,数据库版本号修改为 2 ,增加了一个 标签;好了,现在运行程序,点击按钮,查看结果:
可以看到,AndDev 表中增加了一个 city 列,level 表也创建成功了。
添加数据
前面已经配置好环境,冰成功创建了两张表,下面我们就针对这两张表进行CRUD操作,先来给 AndDev 表添加一组数据,在我们的 Activity 上再添加一个按钮,其点击事件代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
仔细看看上面的代码,对于最后一行是不是有些疑惑了,这里需要说明的是,litepal 对表的 CRUD 操作依赖一个类 DataSupport ,所以如果我们需要对表进行操作,那么这个实体类就需要继承 DataSupport 类才可以。
运行程序,点击添加按钮,查看结果:
可以看到,一组数据成功添加进了我们的 AndDev 表。
更新数据
我们一般的更新就是针对已存储的对象进行重新设值,那么,LitePal 是怎么判断某个对象是已存储的呢?当然提供了方法,通过 model.isSaved() 方法返回结果来判断,true 表示已存储,false 表示未存储,那就需要知道一个概念 [ 什么是已存储 ]?两种情况,一种是已经调用过 model.save() 方法去添加数据了;另一种是 model 对象是通过 LitePal 查询 API 查出来的,那么这两种情况都会被认为是已存储的对象。
第一种更新方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
运行查看结果:
可以看到,新的一条数据被成功插入,而且新插入的对象的 workedtime 值并不是 3 ,而是 5,那么就证明更新确实生效了。但是这种方式太死板,再来看一个比较灵活的方式:
修改更新按钮事件代码如下:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
运行结果:
可以看到,将 age = 26 sex = woman 的这条数据的 workedtime 更新为 3 , city 为甘肃。
注意:
如果想把某个字段的值置为默认,那么通过对象的 setXXX() 方法是不起作用的(因为根据就不会调用),LitePal 提供了更新默认的方法,比如下面的示例:
- 1
- 2
- 3
- 1
- 2
- 3
执行这段代码,就会将所有年龄置为 0 ,updateAll()方法接收一个可变参数变量,不写默认就对所有列生效。
删除
我们还是先来看一段代码执行后的结果,删除按钮监听代码:
- 1
- 1
结果:
可以看到,删除了 city 字段值为 “北京”的一条数据。deleteAll() 方法和 updateAll() 方法类似,如果不传参数,默认删除表中所有数据。
查询
LitePal 的查询 API 就更人性化,使用起来挺方便,下面就看例子。在界面添加删除按钮,点击事件执行下面代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
运行查看结果如下:
可以看到,表中的所有数据都已查到,这个方法使用起来方便多了。当然了,LitePal 还给我们提供了其他的查询方法,这里列举如下:
findFirst(xxx.class); 查询表中第一条数据;返回一个实体类对象。
findLast(xxx.class); 查询表中最后一条数据;返回一个实体类对象。
select() 方法用于指定查询那几列;返回一个 List 集合;
- 1
- 1
where() 方法用于指定查询约束条件;返回一个 List 集合;
- 1
- 1
order() 方法用于指定结果的排序方式;返回一个 List 集合;
- 1
- 1
limit() 方法用于指定查询结果的数量;返回一个 List 集合;比如只查表中前 2 条数据,写法如下:
- 1
- 1
offset() 方法用于指定查询数据的偏移量;返回一个 List 集合;比如查表中第 2 条、第 3 条数据,写法如下:
- 1
- 1
当然了我们可以将上面的方法组合起来进行复杂查询:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这段代码表示,查询 AndDev 表中第 3- 7 条满足 city 为甘肃这个条件的 name、sex、age 这三列数据,并将查询结果按照 workedTime 升序排列。
当然了, LitePal 任然支持原生的 SQL 查询:
- 1
- 1
- 开源数据库 LitePal 学习,强大好使的 CRUD
- 开源数据库 LitePal 学习,强大好使的 CRUD
- Android强大的数据库开源框架LitePal
- LitePal的CRUD操作
- Litepal开源数据库
- Android非常强大的第三方数据库LitePal
- LitePal 开源数据库框架学习(跟随郭霖老师的学习)
- Android开源数据库LitePal
- Android开源数据库LitePal
- Android开源数据库LitePal
- android SQLite数据库开源框架LitePal的使用详解
- Android开源数据库框架-LitePal的使用
- Android数据库LitePal框架学习笔记(1)---数据库的adb操作以及LitePal使用入门
- litepal数据库的配置
- (转)Android开源数据库LitePal
- Android开源数据库框架之LitePal
- Litepal (数据库框架) 学习笔记
- 配置LitePal数据库的方法
- Android 之 Notification 必须掌握的知识
- Groovy使用字符串
- 五子棋
- springMVC_基础入门
- 自定义函数分别实现字符串翻转和添加字符串分隔符的功能
- 开源数据库 LitePal 学习,强大好使的 CRUD
- 使用telnet进行http测试
- 继承与组合
- 对称矩阵
- 实验六 基于WinPcap的ARP欺骗实验
- iOS QQ侧滑菜单(高仿)
- Android 广播介绍以及使用示例
- java 变量
- Java工程师学习路径