LitePal是GitHub上一款开源的Android数据库框架.

它採用了对象关系映射(ORM)的模式,将平时开发时最经常使用的一些数据库功能进行了封装。使得开发人员不用编写一行SQL语句就能够完毕各种建表、増删改查的操作。

并且LitePal非常“轻”,jar包大小不到100k,并且近乎零配置。

核心:1)从表中读取到数据,展现给用户;2)把数据存储到表中。

特点:1)全然不须要使用sqlite语句; 2)以面向对象的方式操作数据库。

Github地址:https://github.com/LitePalFramework/LitePal

LitePal使用配置

1) 加入依赖    compile 'org.litepal.android:core:1.3.1'

2) 配置   litepal.xml文件

3) 配置 LitePalApplication,让我们的application继承自LitePalApplication,清单文件。

<?xml version="1.0" encoding="utf-8"?

>

<litepal>  

<dbname value="demo" >  </dbname>   <!-- 数据库的名 --> 

<version value="1" >   </version>        <!-- 数据库的版本号 --> 

<list>    

<mapping class="com.sdufe.thea.guo.model.News" > </mapping>  

<!-- 映射模型 相当于数据表-->   

</list>

</litepal>  

 

mapping 标签主要是用于做映射对象的,一个对象相应一张表,每一个实体类是相应一张表的。创建实体类。就相当于创建了一张表。

1)每一个实体类都要继承自DataSupport类。

2)实体类的名字会自己主动映射成表名。字段名,会自己主动映射成列名。

3)把全部的数据都存储为字符串类型,不要int。时间也存储为字符串类型。

4)默认会给每张表创建一个id,id是自增的,所以不能重名的。

5)实体类写完后(get和set方法),要配置mapping的。Class一定要指向类的全称。

 

在使用 LitePal 框架的时候 , 在项目的 assets 文件夹以下新建一个 litepal.xml 文件 , 当中的内容包含数据库的名称 , 版本号 , 以及映射 , 那它怎样去把这些内容映射进去的 ?

文件名称仅仅能叫litepal.xml;

通过getAssets()读到本地的asset里面的文件,那文件名称Const.LitePal.CONFIGURATION

_FILE_NAME对照,相同的话就读到本地文件了.

在 LitePal 框架的使用中 , 须要配置 AndroidManifest.xml , 在application 中加入android:name="org.litepal.LitePalApplication".
 由于LitePalApplication继承自类Application;并不会影响程序的正常使用。

 

关于数据库中的字段:抽取公共的字段,想在表中存储哪些字段呢?就是对象拥有哪些属性呢。

 

一、建表操作

数据库操作,上来肯定是要建表啊。尽管android原生的SQLiteOpenHelper非常强大。 但还是得自己去写sql语句。

创建表,一行代码都不须要写。仅仅须要创建一个实体类。所相应的表就会自己主动创建。

 

二、怎样查询数据。怎样获取数据源?

查询表中的数据。仅仅须要一行代码就能搞定的。由于相应了存在的实体模型。

创建一个集合,泛型是要查询的对象。

DataSupport类的使用  指定你要从哪一张表中读取数据。字节码文件

mList=DataSupport.findAll();  返回查询到的集合。一行代码完毕查询操作。

 

须要显示收到推送消息的时间,须要存储到数据库中。

String time;  是String类型

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

三、怎样向数据库中存储数据?

创建一个实体类的对象,然后调用set方法,最后实体类对象.save() 就好了。

仅仅要这一个方法,就能够把全部的数据存储到表当中。

把当前的时间存储到数据库中;

 

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");

String time = simpleDateFormat.format(new Date());

SimpleDateFormat   记得时间格式  yyyy-mm-dd hh:mm

format()    获取当前的时间字符串

注意一下set完数据别忘了save()一把,save()方法哪来的? 别忘了我们的实体类继承自DataSupport。

四、怎样删除表中的某一条数据?

获取条目的下标;然后从集合里面,获取到相应的对象NotificationHistory对象;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

将这条数据从数据库删除掉。全然是依照面向对象的方式 进行操作数据库的。

怎样删除表中的全部数据?

DataSupport.deleteAll(News.class);

1)清空数据表(某一个表)中的数据;
2)用户点击这个button。会做哪几种事情? 逻辑一定要清楚(共做了三件事)
LitePal採取的是对象关系映射(ORM)的模式,Object Relational Mapping)那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言。而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。
可是我们为什么要使用对象关系映射模式呢?这主要是由于大多数的程序猿都非常擅长面向对象编程,但当中仅仅有少部分的人才比較精通关系型数据库。

并且数据库的SQL语言晦涩难懂,就算你非常精通它。恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则非常好地攻克了这个问题,它同意我们使用面向对象的方式来操作数据库。从而能够从晦涩难懂的SQL语言中解脱出来。
那么接下来我们就看一看LitePal中是怎样建表的吧。依据对象关系映射模式的理念每一张表都应该相应一个模型(Model)。也就是说。假设我们想要建一张news表。就应该有一个相应的News模型类。新建一个News类。

表中的每一列事实上就是相应了模型类中的一个字段,比方news表中有id、title、content、publishdate、commentcount这几个列,那么在News类中就也应该有这几个字段。当中id这个字段可写可不写,由于即使不写这个字段,LitePal也会在表中自己主动生成一个id列,毕竟每张表都一定要有主键的嘛。
依据LitePal的数据类型支持,能够进行对象关系映射的数据类型一共同拥有8种。int、short、long、float、double、boolean、String和Date。
既然是自己主动映射的话。假设News类中有一个字符串字段我并不想让它映射到数据库表中。这该怎么办呢?对此,LitePal相同採用了一种极为轻量的解决方式,仅仅有声明成private修饰符的字段才会被映射到数据库表中,假设你有某一个字段不想映射(不想存储)的话,仅仅须要将它改成public、protected或default修饰符就能够了
如今仅仅要你对数据库有不论什么的操作,news表就会被自己主动创建出来。比方说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,SQLiteDatabase db = Connector.getDatabase();  
dbname是指定数据库名称。这里不须要加.db哦。 version不用想也知道是指定数据库的版本号了(那是不是以后改动数据库版本号仅仅要该这个值就能够了? 嘿嘿, 必须就是这么简单),还有个list,list节点下有两个mapping细致观察原来是声明的我们刚開始建立的那两个实体类。
http://www.xuebuyuan.com/2225432.html    关于数据库的复杂操作。
消息历史记录模块:
id:          pushID     这个没有意义  消息的id。标示消息的唯一性的
model:       order      标识是哪类消息的
created_at:  push时间   消息的推送事件
body:       消息体     消息的主题内容"您有一条新的订单消息"
contentDetails:消息实体   全部的json字符串  怎么解析都是个问题啊 用户是否点击了通知栏? 没有点击。新到来的消息就是未读消息啊
点击了部分,数据库怎么标示每一条消息是否读过啊? 假设用户删除了通知栏。没有查看消息,那么消息列表里面应该是有的 MainUI 要有提醒的。未读消息数量。 查看推送历史消息的功能。 必须要使用到数据库的。数据库表用于存储全部的历史消息。
数据库操作框架:LitePal
到通知栏,点击后查看详情;可是仅仅能查看一次。 离线消息数量的统计




Litepal 数据库操作框架的使用 (火)的更多相关文章

  1. 写自己的一个pdo数据库操作框架

    http://stackoverflow.com/questions/20669850/pdo-database-abstraction-layer-with-multiple-queries-in- ...

  2. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...

  3. Litepal【开源数据库ORM框架】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 好用的数据库框架. 效果图 代码分析 本篇主要是整理Litepal的引入和增删改查的简单操作,具体使用请阅读参考资料. 使用步骤 一 ...

  4. 数据库开源框架之litepal

    主页: [https://github.com/LitePalFramework/LitePal](https://github.com/LitePalFramework/LitePal) 中文文档地 ...

  5. Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)

    本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...

  6. 十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)

    本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer.Oracle.DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时 ...

  7. PHP-Phalcon框架中的数据库操作

    > 本文描述了PHP-Phalcon框架中数据库操作方法,主要讨论Phalcon框架的Model组件中的操作方法.更详细的Model介绍请参考:官方文档 1. 连接数据库 在Phalcon框架中 ...

  8. JFinalo操作框架racle数据库

    JFinal操作框架oracle数据库.在需求configPlugin()方法来配置链路oracle配置数据库 组态JFinal数据库操作窗口小部件,configPlugin方法 在这里,我打开jdb ...

  9. MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 六:支持多数据库操作

    本次主要内容:修正MongoDB.Repository框架对多数据库的支持. 在之前的五篇文章中对MongoDB.Repository框架做了简单的介绍是实现思路.之前是考虑MongoDB.Repos ...

随机推荐

  1. jquery.jbox JBox-v2.3修改版

    原版jquery.jbox是个不错的jquery扩展,使用简单,功能很多.可惜的是作者把javascript加密了,并且2011年以后就不再更新.如果项目中用到了新的jquery版本,甚至jbox就没 ...

  2. ACM-The Coco-Cola Store

    题目: Once upon a time, there is a special coco-cola store. If you return three empty bottles to the s ...

  3. Installing patches on an ESXi 5.x by the command

    Purpose This article outlines the procedure for installing patches on an ESXi 5.x host from the comm ...

  4. Nodejs 网络爬虫(资讯爬虫) 案例

    1. superagent superagent 是一个流行的nodejs第三方模块,专注于处理服务端/客户端的http请求.在nodejs中,我们可以使用内置的http等模块来进行请求的发送.响应处 ...

  5. poj 2079 Triangle (二维凸包旋转卡壳)

    Triangle Time Limit: 3000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Stat ...

  6. C++ delete 两次

    转载自:http://blog.csdn.net/jxluofeng/article/details/19766801 <问题>危险的代码: int* p=new int(1);   de ...

  7. 小Z爱图论(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z最近喜欢上了图论,于是他研究了一下图的连通性问题.但是他遇到了一个难题. 给定一个n个点的有向图,求有多少点对(i,j)满足从i点出发能到达点j ? 小Z仅会简单的朴素算法,所以他想问问你 ...

  8. Error C1189: #error: Please use the /MD switch for _AFXDLL builds(转)

    原文转自 https://www.cnblogs.com/zwh0214/p/6048360.html 在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : ...

  9. 非常好!!!Linux源代码阅读——中断【转】

    Linux源代码阅读——中断 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/2_int.html 目录 为什么要有中断 中断的作用 中断的处 ...

  10. web应用性能优化经验总结

    常见性能优化要求      在我经历的性能优化案例中,常见的问题都是这样开始的:      a) 前台访问很慢,请帮忙分析优化      b) 用户对性能很不满意,再不解决就要投诉      c) 数 ...