• Litepal 数据库操作框架的使用 (火)


    LitePalGitHub上一款开源的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)默认会给每张表创建一个idid是自增的,所以不能重名的

    5)实体类写完后(getset方法),要配置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类型


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

    创建一个实体类的对象,然后调用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对象;



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

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

    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
    到通知栏,点击后查看详情;可是仅仅能查看一次。

    离线消息数量的统计

    
    
    
    
    
    
    
    
    
    

  • 相关阅读:
    7.9 C++ STL算法
    7.8 C++容器适配器
    7.7 C++基本关联式容器
    Django项目静态文件加载失败问题
    Centos6.5安装mysql5.7详解
    使用Xshell上传下载文件
    linux中MySQL本地可以连接,远程连接不上问题
    Linux常用命令
    Linux环境安装python3
    python 字符串最长公共前缀
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8707893.html
Copyright © 2020-2023  润新知