一、LitePal简介

LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种表的建设和增删改查的操作。LitePal的项目主页上也有详细的使用文档,地址是:https://github.com/LitePalFramework/LitePal

二、配置LitePal

1、编辑app/build.gradle文件,在dependencies闭包中添加:

1.4.1是版本号的意思,最新版本号可以到LitePal官网上查看
2、还需要配置litepal.xml文件,右击app/src/main 目录 -NEW -Directory,创建一个assets目录,接着在assets目录下再新建一个litepal.xml文件,接着编辑该文件中的内容:

其中标签用于指定数据库名,标签用于指定数据库版本号,标签用于指定所有的映射模型
3、最后还需要配置一下LitePalApplication,修改清单文件的代码

这里我们将项目的application配置为org.litepal.LitePalApplication,这样才能让LitePal的所有功能都可以正常工作。
现在LitePal的配置工作已经完成。

三、创建和升级数据库

对象关系映射(ORM)模式:我们使用的编程语言是面向对象语言,而使用数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射。可以用面向对象的思维来操作数据库,而不用再和SQL语句打交道了。

1、定义一个Book类

2、将Book类添加到映射模型中,修改litepal.xml代码

这里使用标签来声明我们要配置的映射模型,注意一定要使用完整的类名,不管有多少模型类需要映射,都是使用同样的方式配置在标签下即可
3、现在只要执行一次数据库的操作,BookStore.db数据库就会自动创建出来,添加一个创建数据库的按钮:

比如我们想要想Book表添加一个press(出版社)列,直接修改Book类中的代码,添加一个press字段即可,

与此同时,我们还想要添加一张Category表,那么只需要新建一个Category类就可以了:

改完了所有我们想改的东西,只需要将版本号加1就行了,由于这里还添加了一个新的模型,因此也需要将它添加到映射模型列表当中,修改litepal.xml代码:

这样就完成啦!

四、使用LitePal添加数据

1、LitePal进行表管理操作时不需要模型类有任何的继承结构,但是进行CRUD操作时就不行了,必须要继承自DataSupprt类才行,因此我们需要先把继承结构给加上,修改Book类中的代码:

2、接着我们向Book表中添加数据,新建一个添加数据按钮:

五、使用LitePal更新数据

1、最简单的一种更新方式就是对已存储的对象重新设置,然后重新调用save()方法即可。
2、对于LitePal来说,对象是否存储就是根据调用model.isSaved()方法的结果来判断的,返回true就表示已存储,返回false就表示未存储,那么接下来的问题就是,什么情况下会返回true,什么情况会返回false呢?

有两种情况下model.isSaved()方法才返回true,一种情况是已经调用过model.save()方法去添加数据了,此时model会被认为是已存储的对象,另一种情况是model对象是通过LitePal提供的查询API查出来的,由于是从数据库中查到的对象,因此也会被认为是已存储的对象。

示例:更新书名的价格,新建一个更新按钮:

不过,在使用updateAll()方法时,还有一 个非常重要的知识点是你需要知晓的, 就是当你想把一个字段的值更新成默认值时,是不可以使用上面的方式来set数据的。我们都知道,在Java中任何一 种数据类型的字段都会有认值,例如int类型的默认值是0,boolean类型的默认值是false, String 类型的默认值是null。那么当new出一个Book对象时,其实所有字段都已经被初识化成默认值了,比如说pages字段的值就是0。因此,如果我们想把数据库表中的pages列更新成0,直接调用book. setPages (0)是不可以的,因为即使不调用这行代码,pages字段本身也是0, LitePal 此时是不会对这个列进行更新的。
对于所有想要将为数据更新成默认值的操作,LitePal 统一提供了个setToDefault()方法, 然后传人相应的列名就可以实现了。 比如我们可以这样写:
Book book = new Book();
book. setToDefault(“pages”);
book. updateAll();
这段代码的意思是,将所有书的页数都更新为0.因为updateAll()方法中没有指定约束条件,因此更新操作对所有数据都生效了。

六、使用LitePal删除数据

使用LiePal 删除数据的方式主要有两种,第一种比较简单,
就是直接调用已存储对象的delete()方法就可以了,对于已存储对象的概念,我们在上一一小节中已经学习过了。也就是说,调用过save()方法的对象,或者是通过LitePal提供的查询API查出来的对象,都是可以直接使用delete()方法来删除数据的。这种方式比较简单,我们就不进行代码演示了,下 面直接来看另外种删除数据的方式。

示例:删除Book表中价格低于200块的数据,新建一个按钮:

七、使用LitePal查询数据

示例:查询Book表中的所有信息

除了findAl()方法之外,LitePal还提供了很多其他非常有用的查询API。
1、比如我们想要查询Book表中的第一 条数据就可以这样写:
Book firstBook = DataSupport. findFirst (Book.class);
2、查询Book表中的最后一条数据 就可以这样写:
Book lastBook = DataSupport. findLast (Book.class);
3、我们还可以通过连缀查询来定制更多的查询功能。
(1)、select()方法用于指定查询哪几列的数据,对应了SQL当中的select关键字。比如只查name和author这两列的数据,就可以这样写:
ListeBook> books = Datasupport. select(“name”, “author” ).find(Book.class);
(2)、where方法用于指定在询的约束条件,对应了sQL当中的where关键字。比如只查百
数大于400的数据,就可以这样写:
List-oo bs = Dasupprt .where( "ages> ?”, “00no.k.chas
(3)、order()方法用于指定结果的排序方式,对应了sQL当中的order by关键字。比如将查询结果按照书价从高到低排序,就可以这样写:
List books = DataSupport . order(“price desc”). find(Book.class);
其中desc表示降序排列,asc 或者不写表示升序排列。
(4)、limit()方法用于指定查询结果的数量,比如只查表中的前3条数据,就可以这样写:
List books = DataSupport. limit(3). find(Book. class);
(5)、offet()方法用于指定查询结果的偏移量,比如查询表中的第2条、第3条、第4条数据,就可以这样写:
List books = Datasupport.
由于limit(3)查询到的是前3条数据,这里我们再加上offset(1)进行一个位置的偏移,就能实现查询第2条、第3条、第4条数据的功能了。Limit()和ffset()方法共同对应了SQL当中的limit关键字。
(6)、当然,你还可以对这5个方法进行任意的连缀组合,来完成一个比较复杂的查询操作:

List<Book> books = Datasupport. select("name", "author", "pages")
.where("pages > ?",“400")
,order(" pages")
.limit(10)
.offset(10)
, find ( Book.class);

这段代码就表示,查询Book表中第11~20 条满足页数大于400这个条件的name、author和pages这3列数据,并将查询结果按照页数升序排列。

当前,如果你实在有一些特殊需求,上述的API都满足不了你的时候,LitePal 仍然 支持使用原生的SQL来进行查询:
Cursor c = DataSupport. findBySQL(“select * from Book where pages > ? and price < ?” “400”,“20”) ;
调用DataSupport.findBySQL()方法来进行原生查询,其中第一个参数用于指定SQL语句,后面的参数用于指定占位符的值。注意findBySQL()方法返回的是一个Cursor对象,接下
来你还需要通过之前所学的老方式将数据一取出才行。

根据郭霖大神的第一行代码学习,敬礼!

Android初学之十七:使用LitePal操作数据库相关推荐

  1. Android 第十二课 使用LitePal操作数据库(记得阅读最后面的注意事项哦)

    一.LitePal简介 1.(新建项目LitePalTest) 正式接触第一个开源库---LitePal LitePal是一款开源的Android 数据库框架,它采用了对象关系映射(ORM)的模式. ...

  2. 使用LitePal操作数据库(CRUD增删改查) 项目已上传GitHub

    GitHub项目地址: https://github.com/Skymqq/LitePalSave.git LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)映射的模式 ...

  3. Android Studio中通过SQLiteDatabase类操作数据库

    SQLite是一款轻型的数据库,主要用在嵌入式系统,它占用的资源非常低.SQLite不依赖第三方软件,也不需要安装.数据库中的信息都包含在一个文件中,这个文件可以自由地复制到其它目录或其它机器上. 在 ...

  4. 使用LitePal操作数据库

    配置litepal环境 //1.导入项目依赖 implementation 'org.litepal.android:core:1.4.1'//2.搭建实体类package com.dds.huqin ...

  5. Android的LitePal开源数据库框架学习笔记

    LitePal是一款非常好用的数据库开源框架,它采用了对象关系映射(ORM)的模式,使用这个框架从创建数据库到操作数据库都变成极其简单,那么我们就开始学习吧.它的开源地址:https://github ...

  6. Android 使用ORMLite 操作数据库

    参考:http://blog.csdn.net/cjjky/article/details/7096987 ormlite 方法查询:http://ormlite.com/javadoc/ormlit ...

  7. 使用android快速开发框架afinal的FinalDb操作android数据库

    2019独角兽企业重金招聘Python工程师标准>>> 今天给大家介绍下#afinal#来操作android的数据库sqlite. #afinal#是一个android的orm.io ...

  8. Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录

    Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 一.任务 ...

  9. Android备考01 黑马76期-day03 操作数据库

    数据库创建以及原始方式操作数据库 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/a ...

最新文章

  1. 编程实现路由算法 实验报告_lt;中国通信专刊gt; EARS:用于软件定义网络中自动路由的智能驱动体验网络架构...
  2. web-httpd2.4编译安装
  3. Vmware 10 安装
  4. 51nod1238 最小公倍数之和 V3
  5. python手机版代码-Python手机号码归属地查询代码
  6. 【集合论】二元关系 ( 二元关系运算示例 | 逆运算示例 | 合成运算示例 | 限制运算示例 | 像运算示例 )
  7. MyBatis——@Result注解column参数传递多个参数
  8. iPhone将NSString转换编码集为gb2312或者gbk的方法
  9. c#抽象属性_C#中的抽象属性
  10. python tesseract ocr_使用Python和Tesseract OCR解决Captch
  11. 在PLSQL中编译复杂的java(转)
  12. PPPoE工作原理与帧格式
  13. 【渝粤教育】国家开放大学2019年春季 2321物流学概论 参考试题
  14. 施乐7556_富士施乐Fuji Xerox WorkCentre 7556 驱动
  15. 【时间序列】动态时间规整(DTW)算法简介(python)
  16. 阿铭Linux_网站维护学习笔记20190304
  17. 解决 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found (required by 问题
  18. webshell、一句话木马的权限问题
  19. Sereja and Swaps
  20. 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1

热门文章

  1. mysql数据库系统原理_数据库系统原理及MySQL应用教程
  2. 小程序 --- 实现多选功能
  3. Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合
  4. 如何有效解决windows无法访问指定设备
  5. Python爬虫-爬取腾讯小视频
  6. Java集合源码浅析(一) : ArrayList
  7. 【camx】camera sensor点亮
  8. 行人检测——Caltech Pedestrian Dataset 数据集的使用
  9. 你似乎加载了一个旧版本的opencore_黑苹果加载原生电源管理,手把手教你开启节能五项!...
  10. 中国网建SMS短信通API下行接口参数