Litepal 数据库操作框架的使用 (火)
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 数据库操作框架的使用 (火)的更多相关文章
- 写自己的一个pdo数据库操作框架
http://stackoverflow.com/questions/20669850/pdo-database-abstraction-layer-with-multiple-queries-in- ...
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- Litepal【开源数据库ORM框架】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 好用的数据库框架. 效果图 代码分析 本篇主要是整理Litepal的引入和增删改查的简单操作,具体使用请阅读参考资料. 使用步骤 一 ...
- 数据库开源框架之litepal
主页: [https://github.com/LitePalFramework/LitePal](https://github.com/LitePalFramework/LitePal) 中文文档地 ...
- Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)
本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...
- 十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)
本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer.Oracle.DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时 ...
- PHP-Phalcon框架中的数据库操作
> 本文描述了PHP-Phalcon框架中数据库操作方法,主要讨论Phalcon框架的Model组件中的操作方法.更详细的Model介绍请参考:官方文档 1. 连接数据库 在Phalcon框架中 ...
- JFinalo操作框架racle数据库
JFinal操作框架oracle数据库.在需求configPlugin()方法来配置链路oracle配置数据库 组态JFinal数据库操作窗口小部件,configPlugin方法 在这里,我打开jdb ...
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 六:支持多数据库操作
本次主要内容:修正MongoDB.Repository框架对多数据库的支持. 在之前的五篇文章中对MongoDB.Repository框架做了简单的介绍是实现思路.之前是考虑MongoDB.Repos ...
随机推荐
- Statement [倍增+线段树]
题面 思路 首先,可以确定的是,本题因为每个点只有一条入边,所以整个图肯定是一个基环外向树森林 那么我们首先考虑树上的情况: 我们考虑一个真点,它会对它的子树里面的所有假点产生贡献 一个真点对一个假点 ...
- Codeforces 359D Pair of Numbers | 二分+ST表+gcd
题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间 ...
- position:absolute和float隐式改变display为inline-block
不论之前是什么类型的元素(display:none除外), 只要设置了position:absolute或float, 都会让元素以display:inline-block的方式显示, 可以设置长宽, ...
- HCNA--tcp/ip基础
1.OSI七层参考模型 应用层 7 表示层 6 高层:负责主机之间的的数据传输 会话层 5 传输层 4 主机之间端到端的连接 tcp /udp segment 网络层 3 路由 寻址 packet ...
- 封装removeClass()
<div class="box haha xixi">123</div> <script> function removeClass(eleme ...
- python常用20库
python核心库和统计 简述 1. Requests.最着名的http库由kenneth reitz编写.这是每个python开发人员必备的. 2. Scrapy.如果您参与webscraping, ...
- Selenium2 鼠标悬停效果实现
对一些js控件,鼠标悬停的时候出发下拉层的实现 1.使用Action public void moveToElement(WebDriver driver, By locator) { Actions ...
- 灰姑娘的水晶鞋(NOIP模拟赛Round 7)
[问题描述] 传说中的水晶鞋有两种颜色:左边的水晶鞋是红色,右边的是蓝色,据说穿上它们会有神奇的力量. 灰姑娘要找到她所有的n双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权 ...
- Linux内核中断引入用户空间(异步通知机制)【转】
转自:http://blog.csdn.net/kingdragonfly120/article/details/10858647 版权声明:本文为博主原创文章,未经博主允许不得转载. 当Linux内 ...
- shell 将字符串分割成数组
代码:test.sh #!/bin/bash a="one,two,three,four" #要将$a分割开,可以这样: OLD_IFS="$IFS" IFS= ...