Android LitePal
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相关推荐
- android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解
前言 正好项目用了这种数据存储方式,特地写一篇加深印象,在我看来,LitePal是使用最简单,集成最方便的数据库,没有之一. LitePal 简介 LitePal 是一款开源的 Android 数据库 ...
- Android——LitePal
1.配置LitePal环境 在project模式下,于build.gradle中dependencies段添加代码引用开源库: compile 'org.litepal.android:core:1. ...
- android mysql代码_LitePal——Android数据库框架完整使用手册(示例代码)
LitePal for Android LitePal是一个开源的Android库,使开发人员使用SQLite数据库非常简单.您无需编写任何SQL语句就可以完成大部分数据库操作,包括创建或升级表,增. ...
- Android开源项目分类整理
Android开源项目分类整理 字数1492 分类整理平时收集的项目,便于查找. Android 架构 Mosby A Model-View-Presenter library for modern ...
- Android 天气APP(十八)常用城市
上一篇:Android 天气APP(十七)热门城市 - 国内城市 完成此篇文章实现的效果图如下: 前言 常用城市对于那些经常在外面出差的朋友来说相信是不陌生的,因为涉及到在不同城市之间居住,所以对于其 ...
- LitePal基本使用概述
前言 LitePal是一款开源的Android数据库框架,它采用了对象映射关系(ORM)的模式,并将我们平时开发最常用的一些数据库功能进行了封装,减小了代码量. 官方Git地址 使用 使用LitePa ...
- Android学习羁绊之数据存储
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术 ...
- Android客户端开发—开源数据库框架LitePal
LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...
- android ORM框架LitePal 封装SQLite
LitePal的基本用法 虽说LitePal宣称是近乎零配置,但也只是"近乎"而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法. ...
- Android数据库专家秘籍(七)经验LitePal查询艺术
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/40153833 经过了多篇文章的学习,我们已经把LitePal中的绝大部分内容都掌握 ...
最新文章
- 「敏捷开发」适合什么样的团队?
- JavaScript代码(一)
- 随机森林算法的随机性_理解随机森林算法的图形指南
- vue中路径带# vs 不带#
- [springboot]集成org.quartz-scheduler进行任务调度(定时任务)
- “己欲立而立人,己欲达而达人。”
- 算法岗和开发岗有什么区别?
- 【爬虫】如何解决爬虫爬取图片时遇到百度安全验证的问题?即页面上没有显示图片的源地址,没有img标签,只有div标签
- 基于Redis解决业务场景中延迟队列的应用实践
- 【国庆福利】中奖名单公布
- springboot多数据源配置导致mybatis的下划线转驼峰命名不起作用
- php 处理透明 png 图片黑边问题
- JavaScript数字运算必备库——big.js源码解析
- 关于水平集函数的重新初始化过程
- 2021全国大学生数学建模竞赛B题思路
- ros操作命令与实操-话题发布
- 微信小程序页面传值的几种方式
- 在知乎发文章基本没流量
- # 设置防火墙白名单
- 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )
热门文章
- es6 class super关键字
- 10.5~10.6复习与预习的进行
- working copy is not up-to-date
- java 数组或者链表输出
- Codeforces 505 A Mr. Kitayuta's Gift【暴力】
- 二维树状数组 探索进行中
- MyEclipse 8.6.1下载|MyEclipse 8下载|MyEclipse 8.6.1官网下载
- git clone权限被拒绝
- C#中各种字符类型的转化
- android 快速请求取消,Android OkHttp + Retrofit 取消请求的方法