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

配置LitePal

声明开源库引用

大多数开源项目都会将版本提交到jcenter上,我们只需要在app/build.gradle文件中声明该开源库的引用就可以了。
在dependencies闭包中添加org.litepal.android:core:1.4.1

dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:26.+'testCompile 'junit:junit:4.12'compile 'org.litepal.android:core:1.4.1'
}

配置litepal.xml

在app/src/main目录下新建assets目录,在assets目录下新建litepal.xml文件

<?xml version="1.0" encoding="utf-8" ?>
<litepal><dbname value="BookStore"></dbname><version value="1"></version><list></list>
</litepal>

<dbname>标签用于指定数据库名,<version>用于指定版本号,<list>中就是指定的映射模型

配置LitePalApplication

修改AndroidManifest.xml中的代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.litepaltest"><applicationandroid:name="org.litepal.LitePalApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">...</application>
</manifest>

创建和升级数据库

LitePal采取的对象关系映射的模式,那么什么是对象关系映射(ORM)呢?简单点说,我们使用的编程语言是面向对象语言,而使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系数据库之间建立的一种映射关系,这就是对象映射关系。(还记得服务器等很多地方都有ORM思想)
不过你可不要小看对象关系映射模式,它赋予了我们一个强大的功能,就是可以用面向对象的思想来操作数据库。新建Book类:

public class Book{private int id;private String author;private double price;private int pages;private String name;public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getId() {return id;}   public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPages() {return pages;}public void setPages(int pages) {this.pages = pages;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

修改litepal.xml中的代码

<?xml version="1.0" encoding="utf-8" ?>
<litepal><dbname value="BookStore"></dbname><version value="1"></version><list><mapping class="com.example.a51104.litepaltest.Book"></mapping></list>
</litepal>

修改MainActivity

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button createDatabase=(Button)findViewById(R.id.create_database);createDatabase.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {LitePal.getDatabase();//相当于调用onCreate()或者onUpgrade()}});}
}

当我们想要修改数据库内容时,直接修改类的内容(如增加或者删除列)、新建类(增加表)等。然后修改版本号后重新建库。当然LitePal还自动帮我们做完项非常重要的工作,就是保留之前表中的所有数据,这样就再也不用担心数据丢失的问题。

使用LitePal添加数据

  • 创建出模型类的实例,将需要存储的信息设置好后调用save()方法
  • 进行CRUD操作时需要继承DataSupport类
public class Book extends DataSupport{...
}
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);...Button addData=(Button)findViewById(R.id.insert_database);addData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book=new Book();book.setName("Android Studying");book.setAuthor("G");book.setPages(454);book.setPrice(16.96);book.setPress("Unknow");book.save();}});}
}

使用LitePal更新数据

已存储对象:model.isSaved()被用来判断是否已存储。在两种情况下会返回true:一种是已经调用了model.save()方法去添加数据了,此时model会被认为是已存储的对象。另一种情况是model对象是通过LitePaal提供的查询API查到的对象。
修改已经存储的对象,方法一

updateData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book=new Book();book.setName("Android Studying2");book.setAuthor("G2");book.setPages(510);book.setPrice(19.95);book.setPress("Unknow");book.save();book.setPrice(10.99);book.save();//更新成默认值的操作,默认值是不能直接set的可以通过这个方法指定列名进行操作
//                Book book=new Book();
//                book.setToDefault("pages");
//                book.updateAll();}});
}

方法二

updateData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book=new Book();book.setPrice(14.95);book.setPress("Author");book.updateAll("name=? and author=?","Android Studying","G");}});
}

使用LitePal删除数据

deleteData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {DataSupport.deleteAll(Book.class,"price<?","15");}});

使用LitePal查询数据

查询所有行
List<Book> books=DtaSupport.findAll(Book.class);

queryButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {List<Book>books=DataSupport.findAll(Book.class);for(Book book:books){Log.d("MainActivity","book name is "+book.getName());Log.d("MainActivity","book author is "+book.getAuthor());Log.d("MainActivity","book pages is "+book.getPages());Log.d("MainActivity","book price is "+book.getPrice());Log.d("MainActivity","book press is "+book.getPress());}}});
功能 代码
查询表所有行 List<Book> books=DataSupport.findAll(Book.class);
查询第一条数据 Book firstBook=DataSupport.findFirst(Book.class);
查询最后一条数据 Book lastBook=DataSupport.findLast(Book.class);
查询指定几列数据 List<Book>books=DataSupport.select("name","author").find(Book.class)
查询指定的约束条件 List<Book>books=DataSupport.where("pages>?","400").find(Book.class)
指定结果的排序顺序 List<Book> books=DataSupport.order("price desc").find(Book.class)
查询指定结果的数量 List<Book> books=DataSupport.limit(3).find(Book.class)
指定查询结果的偏移量 List<Book> books=DataSupport.limit(3).offset(1).find(Book.class)

当然这些可以组合起来(流模式),形成强大的查询功能

SQL语言

Cursor cursor=DataSupport.findBySQL("select * from Book where pages > ? and price < ?","400","20");

Android LitePal相关推荐

  1. android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解

    前言 正好项目用了这种数据存储方式,特地写一篇加深印象,在我看来,LitePal是使用最简单,集成最方便的数据库,没有之一. LitePal 简介 LitePal 是一款开源的 Android 数据库 ...

  2. Android——LitePal

    1.配置LitePal环境 在project模式下,于build.gradle中dependencies段添加代码引用开源库: compile 'org.litepal.android:core:1. ...

  3. android mysql代码_LitePal——Android数据库框架完整使用手册(示例代码)

    LitePal for Android LitePal是一个开源的Android库,使开发人员使用SQLite数据库非常简单.您无需编写任何SQL语句就可以完成大部分数据库操作,包括创建或升级表,增. ...

  4. Android开源项目分类整理

    Android开源项目分类整理 字数1492 分类整理平时收集的项目,便于查找. Android 架构 Mosby A Model-View-Presenter library for modern ...

  5. Android 天气APP(十八)常用城市

    上一篇:Android 天气APP(十七)热门城市 - 国内城市 完成此篇文章实现的效果图如下: 前言 常用城市对于那些经常在外面出差的朋友来说相信是不陌生的,因为涉及到在不同城市之间居住,所以对于其 ...

  6. LitePal基本使用概述

    前言 LitePal是一款开源的Android数据库框架,它采用了对象映射关系(ORM)的模式,并将我们平时开发最常用的一些数据库功能进行了封装,减小了代码量. 官方Git地址 使用 使用LitePa ...

  7. Android学习羁绊之数据存储

    数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术 ...

  8. Android客户端开发—开源数据库框架LitePal

    LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...

  9. android ORM框架LitePal 封装SQLite

    LitePal的基本用法 虽说LitePal宣称是近乎零配置,但也只是"近乎"而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法. ...

  10. Android数据库专家秘籍(七)经验LitePal查询艺术

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/40153833 经过了多篇文章的学习,我们已经把LitePal中的绝大部分内容都掌握 ...

最新文章

  1. 「敏捷开发」适合什么样的团队?
  2. JavaScript代码(一)
  3. 随机森林算法的随机性_理解随机森林算法的图形指南
  4. vue中路径带# vs 不带#
  5. [springboot]集成org.quartz-scheduler进行任务调度(定时任务)
  6. “己欲立而立人,己欲达而达人。”
  7. 算法岗和开发岗有什么区别?
  8. 【爬虫】如何解决爬虫爬取图片时遇到百度安全验证的问题?即页面上没有显示图片的源地址,没有img标签,只有div标签
  9. 基于Redis解决业务场景中延迟队列的应用实践
  10. 【国庆福利】中奖名单公布
  11. springboot多数据源配置导致mybatis的下划线转驼峰命名不起作用
  12. php 处理透明 png 图片黑边问题
  13. JavaScript数字运算必备库——big.js源码解析
  14. 关于水平集函数的重新初始化过程
  15. 2021全国大学生数学建模竞赛B题思路
  16. ros操作命令与实操-话题发布
  17. 微信小程序页面传值的几种方式
  18. 在知乎发文章基本没流量
  19. # 设置防火墙白名单
  20. 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )

热门文章

  1. es6 class super关键字
  2. 10.5~10.6复习与预习的进行
  3. working copy is not up-to-date
  4. java 数组或者链表输出
  5. Codeforces 505 A Mr. Kitayuta's Gift【暴力】
  6. 二维树状数组 探索进行中
  7. MyEclipse 8.6.1下载|MyEclipse 8下载|MyEclipse 8.6.1官网下载
  8. git clone权限被拒绝
  9. C#中各种字符类型的转化
  10. android 快速请求取消,Android OkHttp + Retrofit 取消请求的方法