第三方数据库框架 - LitePal简介

1. 简介


LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删改查的操作。并且很轻量级,jar包不到100k,几乎零配置。

2. 关系映射模型?


我们的编程语言使用的是面向对象语言,数据库用的是关系型数据库,将面向对象语言和关系型数据库建立的一种映射关系成为对象关系映射。

3. 为什么使用对象关系映射?


因为我们都比较擅长面向对象编程,只有很少一部分人精通关系型数据库,绝大多数的人都不太喜欢在代码中写Sql语句,使用面向对象来操作数据库,从而可以从Sql语句中解脱出来。

4. 关系映射模型特点?


每一张表,都有一张对应的JavaBean类,比如我要创建一张news表,就需要去创建一个News { } 类。

5. 使用步骤如下:


1>:添加依赖:
// litepal数据库
compile 'org.litepal.android:core:1.6.1'
2>:新建assets目录,然后创建 litepal.xml资源文件,用于创建数据库名称、数据库版本、表名、数据库存放的位置;
图片.png
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--
        Define the database name of your application.
        By default each database name should be end with .db.
        If you didn't name your database end with .db,
        LitePal would plus the suffix automatically for you.
        For example:
        <dbname value="demo" />
    -->
    <dbname value="litepaldemo" />

    <!--
        Define the version of your database. Each time you want
        to upgrade your database, the version tag would helps.
        Modify the models you defined in the mapping tag, and just
        make the version value plus one, the upgrade of database
        will be processed automatically without concern.
            For example:
        <version value="1" />
    -->
    <version value="1" />

    <!--
        Define your models in the list with mapping tag, LitePal will
        create tables for each mapping class. The supported fields
        defined in models will be mapped into columns.
        For example:
        <list>
            <mapping class="com.test.model.Reader" />
            <mapping class="com.test.model.Magazine" />
        </list>
    -->
    <list>
        <mapping class="com.novate.litepal.News"></mapping>
    </list>

    <!--
        Define where the .db file should be. "internal" means the .db file
        will be stored in the database folder of internal storage which no
        one can access. "external" means the .db file will be stored in the
        path to the directory on the primary external storage device where
        the application can place persistent files it owns which everyone
        can access. "internal" will act as default.
        For example:
        <storage value="external" />
    -->

    <!-- 直接设置这个,就表示数据库存储的位置,直接打开手机存储就可以找到 -->
    <storage value="guolin/database"/>
</litepal>

以上数据库名称是litepaldemo、版本是1、只有一张表是News、数据库存放的位置是guolin/database 打开手机存储就可以找到。

注意两点:

第一:每次只要数据库发生变动, 版本号version都必须加1;
第二:表的写法是全类名+表名(News),如果是多张表,就在list标签中写多个mapping标签就ok,比如:

<list>
         <mapping class="com.novate.litepal.News"></mapping>
         <mapping class="com.test.model.Reader" ></mapping>
         <mapping class="com.test.model.Magazine" ></mapping>
</list>
3>:然后在你Application中配置,这里有2种写法:

第一:如果你自己项目中没有写BaseApplication这种基类的话,就直接在清单文件中配置 LitePalApplication,代码如下:

<manifest>
    <application
        android:name="org.litepal.LitePalApplication"
        ...
    >
        ...
    </application>
</manifest>

第二:如果你自己的项目中定义了自己的 BaseApplication,那么就直接在BaseApplication中的onCreate()方法中初始化下 LitePal就ok。

<manifest>
    <application
        android:name="com.example.BaseApplication"
        ...
    >
        ...
    </application>
</manifest>
public class BaseApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化LitePal数据库
        LitePal.initialize(this);
    }
    ...
}
这个时候,我们就已经创建好了数据库、表,并且也已经初始化好了,就可以开始进行增、删、改、查等操作了,我们在开发的过程中其实用的最多的也就是增、删、改、查等方法。

6. 增、删、改、插写法如下:


6.1>:增加一条数据
图片.png

注意:save()是添加一条数据,批量添加是 DataSupport.saveAll(persons);

6.2>:删除
图片.png
6.3>:修改
图片.png
6.4>:查询
图片.png
注意:

1>:以上的增、删、改、查语句中只要涉及到 的 "?",意思是 占位符,前边有几个 "?", 那么后边就会有对应的几个值,然后用 "," 逗号隔开;
2>:以上就是常用的增、删、改、查的语句了,当然肯定不是特别的全,以后如果还有其他需求的话,大家可以直接去网上去搜都是可以的,下边给大家罗列下关于 LitePal的系列文章,郭大神写的,我上边的四张截图就是运行郭大神的demo,然后放上去的。

该demo的 github如下:
https://github.com/LitePalFramework/LitePal

7. 郭神相关LitePal系列文章链接:


Android数据库高手秘籍(零)——前言
http://blog.csdn.net/guolin_blog/article/details/38083103
Android数据库高手秘籍(一)——SQLite命令
http://blog.csdn.net/guolin_blog/article/details/38461239
Android数据库高手秘籍(二)——创建表和LitePal的基本用法
http://blog.csdn.net/guolin_blog/article/details/38556989
Android数据库高手秘籍(三)——使用LitePal升级表
http://blog.csdn.net/guolin_blog/article/details/39151617
Android数据库高手秘籍(四)——使用LitePal建立表关联
http://blog.csdn.net/guolin_blog/article/details/39207945
Android数据库高手秘籍(五)——LitePal的存储操作
http://blog.csdn.net/guolin_blog/article/details/39345833
Android数据库高手秘籍(六)——LitePal的修改和删除操作
http://blog.csdn.net/guolin_blog/article/details/40083685
Android数据库高手秘籍(七)——体验LitePal的查询艺术
http://blog.csdn.net/guolin_blog/article/details/40153833
Android数据库高手秘籍(八)——使用LitePal的聚合函数
http://blog.csdn.net/guolin_blog/article/details/40614197

下面是迭代的版本:

2016-03-03 郭霖

LitePal 1.3.1发布了,从此支持图片存储!
http://mp.weixin.qq.com/s/7tDifDvOHr7YI7zCS9fpmQ

2016-11-15 郭霖

你们要的多数据库功能终于来了
http://mp.weixin.qq.com/s/C7nbJXOS9lYPgOda-8Pw0A

2017-03-07 郭霖

LitePal 1.5.0版本发布,你想要的都在这里
http://mp.weixin.qq.com/s/GXPkrkiHk4MWNnpCLzTf_Q

2017-08-15

LitePal 1.6.0版本来袭,数据加解密功能保障你的应用数据安全
https://mp.weixin.qq.com/s/TSp36cnKLxUmAHjT86UCrQ

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,275评论 25 707
  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 11,072评论 12 197
  • 是不是太久没见 面目和记忆中的笑颜已经全非 再见您的三十来天 紧抿的嘴唇拒绝着人生旅途最后的好心情 乌黑的脸刻满了...
    诗涵兒阅读 1,185评论 0 3
  • 笛卡尔提出我思故我在,那就一定有一个主体在思考,沿着这个思路再往前一步,那有没有可能只是这个精神性的存在,而这个物...
    多元思考力阅读 488评论 0 0
  • 昨天是时间阅读日,鬼使神差地没有把购物车清空,今天来考虑读书的问题,这真的还蛮令我头疼。 碎片化的阅读就是浮在表面...
    恩正君不点头阅读 276评论 0 0