LitePal的使用

不怕跌倒,所以飞翔

本文知识点介绍

  • LitePal的集成和简单的使用
  • LitePal中实现增删改查
  • LitePal一些常用的API介绍
  • LitePal的总结

1.LitePal的集成

LitePal是郭霖大神写的,这里知识简单的使用,如果有什么不对的地方希望大家指出. 项目源码地址

1.1LitePal的集成

  • 引入相应的类库
  • 创建litepal.xml
  • 更换继承的Application

1.1.1引入相应的类库

compile 'org.litepal.android:core:1.6.1'

这个可以去项目源码中找到最新的类库

1.1.2创建相应的litepal.xml文件

首先这个文件是在相应的assets文件夹下(创建方法为项目文件夹下New->Folder->Assets Folder就可以创建相应的assets文件夹了),然后在assets文件夹下创建一个相应的litepal.xml文件夹,下面是具体的内容:



    
    
    
        
    

这里说明几点问题:

  1. dbname标签是相应的数据库名称
  2. version标签是相应的数据库的版本,这里注意当里面引用的内容发生改变的时候,要升级相应的版本
  3. list标签是那些对象需要数据库管理,这里注意mapping里面的路径一定要是全路径名称
  4. 这里面list标签中的实体类都应该继承DataSupport这个类,这个千万别忘记

1.1.3更换继承的Application

这里其实份两种情况:

  • 已经有继承的Application
  • 直接继承LitePalApplication

为什么分为这两种情况呢?因为有的项目中可能之前实现Application已经继承了一个其他类型的Application了,那么这个时候因为java的单继承,所以这里就不能直接继承LitePalApplication了,但是LitePal已经帮我们想到这个问题了,所以说下面我们分两种情况实现一下:

  • 第一种

直接在相应项目中的Application中的onCreat()方法中初始化一下就可以了,像下面这样:

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }

这样你的Application可以随便继承其他的Application

在manifest.xml中引入相应的Application,也就是你之前的Application

  • 第二种

直接继承相应的LitePalApplication这里就不用在onCreat()中调用LitePal.initialize(this);这个方法了;

这个就比较特殊了要在相应的application标签中添加Application的时候要这样写android:name="org.litepal.LitePalApplication"

上面这些方法的话就基本上可以实现相应的初始化就完成了

2.LitePal中实现增删改查

2.1LitePal添加数据

关于相应的增加操作,这里主要是通过对象的save()进行的,怎么说呢?其实你只要给相应的类添加了相应的集体参数然后调用相应的save()方法就可以了.具体代码如下:

        LitePalBean zhangSanBean = new LitePalBean("张三", "20", "男");
        zhangSanBean.save();
        LitePalBean liSiBean = new LitePalBean("李四", "25", "男");
        liSiBean.save();

这样就形成了相应的数据库的表结构了,也就是有了相应的数据库了,但是如果你在手机上调试的不Root的话是看不到的.这里说明一个问题添加相同的内容是可以添加进去的

2.2LitePal删除数据

关于删除数据的操作,这里主要是通过对象的delete()或者deleteAll()进行删除,具体代码如下:

        /*这里就是删除所有名字是张三的*/
        DataSupport.deleteAll(LitePalBean.class, "name =?", "张三");

        LitePalBean zhangSanBean = new LitePalBean("张三", "20", "男");
        zhangSanBean.save();
        zhangSanBean.delete();

这里删除的两种方式:

  • 直接对象删除:也就是对象直接调用delete();方法进行;
  • 根据类型进行删除,其实这里就是相当于SQLite进行删除,这里有必要说明一下第二个语句传入内容如果为"name=?"代表的是所有name为后面字段的内容,也就是所有名字为张三的内容都会删除.那么你会问了如果这里面我传入两个内容呢?比如"name=? and age=?"对没错,就是用and进行连接

2.3LitePal更新数据

这里其实很简单,就是更改完相应的数据直接save保存就可以了,代码如下:

        LitePalBean zhaoWuBean = new LitePalBean("赵五", "25", "男");
        zhaoWuBean.save();
        zhaoWuBean.setAge("30");
        zhaoWuBean.save();

这里有一个问题,感觉应该是先取出来这个对象在进行操作才对,才能确保内容的正确性.

2.4LitePal查询方法

关于查询数据的操作,主要用到find()和findAll()等相应的方法,具体代码如下:

   List all = DataSupport.findAll(LitePalBean.class);
        for (int i = 0; i < all.size(); i++) {
            Log.e(TAG, "query: " + all.get(i).toString());
        }
    }

这里只是查询出所有的内容进行相应的打印

3.LitePal常用的API

  • DataSupport.findFirst(XXX.class)
    查询XXX列表中的第一个元素

  • DataSupport.findLast(XXX.class)
    查询XXX列表中的最后一个元素

  • DataSupport.select()
    根据SQLite中的关键字进行查找,例如DataSupport.select("name","age").find(XXX.class) 查询的是相应名字和年龄的两列数据 其他的数据是查不出来的.

  • DataSupport.where()
    相当于SQLite中的where关键字查找,这里还是举个例子->DataSupport.where("name=?","张三").find(XXX.class) 查询的是所有名字为张三的数据内容;

  • DataSupport.order()
    相当于SQLite中的order关键字查找,主要是排序方式,这里还是举个例子->DataSupport.order(price desc).find(XXX.class) 这里面是按照降序进行排列的;desc标识降序排列,**asc
    **代表升序排列

  • DataSupport.limit()
    查询数据库的结果的数量 例子->DataSupport.limit(3).find(XXX.class); 查询3条数据

  • DataSupport.offset()
    查询制定结果的偏移量 例子(我想查询第二条第三条和第四条)-> DataSupport.limit(3).offset(1).find(XXX.class); 这里是从第一条开始,但是不包含相应的第一条

上面的内容可以都是可以连起来查的,写法和构建者的模式类似

当然LitePal也支持相应的原生查找DataSupport.findBySQL(),但是这里返回一个相应的Cursor对象,要根据SQLite的方式取出相应的内容,这里面就不去讲解了,其实是我不会...

你可能感兴趣的:(LitePal的使用)