Litepal采用的是对象关系映射(ORM)模式

 
LitePal的配置工作。
1.添加依赖 
compile 'org.litepal.android:core:1.3.2'

2.配置litepal.xml文件  在src/main创建assets目录 然后在目录下创建一个litepal.xml文件

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore"></dbname> <version value=""></version> <list></list> <!--dbname标签用于指定数据库名
version用于指定数据库版本号
list标签用于指定所有的映射模型-->
</litepal>

3.配置LitepalApplication 修改AndroidManifest中的代码

<application
android:name="org.litepal.LitePalApplication"

创建和升级数据库

创建:

1.写一个java bean
2.将写的java bean 的类添加到影射模型列表中
修改litepal.xml里的list标签
<list>
<mapping class="co.example.leo.litepal.Book"></mapping>
<!--使用mapping标签声明我们要配置的映射模型类,一定要使用完整的类名-->
</list>
3.调用创建数据库
Connector.getDatabase();    

升级:

如果想要添加一个列 只需直接修改Book类中代码 添加一个字段即可
如果需要添加一个表 只需新建一个java bean 然后将版本号加1 并将类添加到映射模型列表中
 
Litepal 添加数据
Litepal进行表管理的操作时不需要模型类有任何的继承结构,但进行CRUD的时候,必须要继承自DataSupport类才可以
1、让模型类继承自DataSupport 
2. 设置数据 调用save方法
Button addData = (Button)findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages();
book.setPrice(16.96);
book.setPress("Unknow");
book.save();
}
});

Litepal 更新数据

最简单的一种更新方式就是对已经存储的对象重新设值 然后重新调用save()方法即可
已存储的对象: 对象是否以存储就是根据调用model.isSaved()方法的结果来进行判断即可,返回true表示已存储,false表示未存储 
一种情况是已经调用过modle.save()方法去添加数据了
另一种情况是model对象是通过Litepal提供的查询API查出来的
这两种情况都会返回true
 Button updateData = (Button)findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages();
book.setPrice(16.96);
book.save();
book.setPages();
book.save();
}
});
显示添加了一条Book数据 
然后调用setPages对书的页数进行了修改,之后再次调用save方法。
第二种方式
public void onClick(View v) {
Book book = new Book();
book.setPages();
book.updateAll("name = ?","The Da Vinci Code");
}
 
设置默认值
Book book = new Book()
book.setDefault("pages");
book.updateAll();

 

删除数据

    //第一个参数用于指定删除那张表的数据 后面的参数用于指定约束条件
DataSupport.deleteAll(Book.class,"price < ?","");

查询数据

List<Book> books = DataSupport.findAll(Book.class);
for(Book book : books){ }

Litepal的其他查询API

 

LitePal的更多相关文章

  1. Android ORM -- Litepal(1)

    ORM,即Object Relation Mapping,对象关系映射,实现了程序里面的类和数据库里面的数据之间的对应关系,对数据库的操作可以通过对类的操作去实现,不用再写SQL语句,从而提高了开发效 ...

  2. Android LitePal 神一般的数据库框架 超级好用

    参考: Android数据库高手秘籍(一)--SQLite命令 Android数据库高手秘籍(二)--创建表和LitePal的基本用法 Android数据库高手秘籍(三)--使用LitePal升级表 ...

  3. android项目中使用开源数据库litepal

    下载地址 https://github.com/LitePalFramework/LitePal 参考文档 http://blog.csdn.net/guolin_blog/article/detai ...

  4. LitePal + Gson + Volley的ORM框架尝试方案

    为了紧跟技术潮流,目前的项目开始采用ORM的思想进行重新设计. 数据库采用轻量级ORM框架LitePal,Json解析采用Gson,网络框架采用Volley. 如果只是单纯的将这些第三方框架引进来,事 ...

  5. litepal的jar包

    转自http://blog.csdn.net/luohai859/article/details/39292607 LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的 ...

  6. 数据库框架 Litepal

    1.导包 dependencies {   compile 'org.litepal.android:core:1.4.1' } 2.在asstes中建立litepal.xml文件 <?xml ...

  7. Android最方便的数据库--LitePal

    郭最近看到神分析LitePal相框,我感觉很强烈,尝试了一下,真的好,我不知道,如果你不习惯学习,那么各不相同,我觉得很合适 看完之后,思想,对于我来说,,实体到set颂值,如果数据非常多,那么你可以 ...

  8. Android数据库高手秘籍(五)——LitePal的存储操作

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/39345833 经过前面几篇文章的学习,我们已经把LitePal的表管理模块的功能都 ...

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

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

  10. Android数据库高手秘籍(六)——LitePal的改动和删除操作

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/40083685 在上一篇文章中,我们学会了使用LitePal进行存储数据的功能.确实 ...

随机推荐

  1. Monkey通过安装包获取包名

    在monkey命令中,包名常作为一个参数.但我们经常知道apk文件,却不知道包名. 如何获取包名呢? 方法一:AAPT 在SDK的build-tools目录下,aapt工具可以查看,创建,更新zip格 ...

  2. Hibernate一级缓存Session和对象的状态

    建议看原文:https://blog.csdn.net/qq_42402854/article/details/81461496 一.session简介        首先,SessionFactor ...

  3. 编译原理_P1003

    1. 语法分析 1.1 上下文无关文法的定义 ----  正规式能定义一下简单的语言,能表示给定结构的固定次数的重复或者没有指定次数的重复 例如:a(ba)5,a(ba)* ---- 正规式不能用于描 ...

  4. 吴裕雄--天生自然python机器学习:基于支持向量机SVM的手写数字识别

    from numpy import * def img2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i ...

  5. 比率(ratio)|帕雷托图|雷达图|轮廓图|条形图|茎叶图|直方图|线图|折线图|间隔数据|比例数据|标准分数|标准差系数|离散系数|平均差|异众比率|四分位差|切比雪夫|右偏分布|

    比率是什么? 比率(ratio) :不同类别数值的比值 在中文里,比率这个词被用来代表两个数量的比值,这包括了两个相似却在用法上有所区分的概念:一个是比的值:另一是变化率,是一个数量相对于另一数量的变 ...

  6. Linux的iptables菜鸟初学

    什么是iptables? iptables是linux下的命令行工具,操控的是linux的防火墙,这个防火墙叫netfilter.通俗的说应该是用户通过iptables把安全设定设置给netfilte ...

  7. appium自动化的工作原理(1)

    用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https: ...

  8. Mysql-win免安装卸载服务后重新安装不能启动的问题

    一.先看配置文件有没有问题,以下是一个简单的配置 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 port ...

  9. [LC] 244. Shortest Word Distance II

    Design a class which receives a list of words in the constructor, and implements a method that takes ...

  10. C++线程池的实现

    线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他 ...