开源库LitePal的用法

前言


   LitePal是一个开源的Android库,允许开发人员使用SQLite数据库非常容易。您可以完成大多数数据库操作,甚至不需要编写SQL语句,包括创建或升级表,压缩操作,聚合函数等。LitePal的设置也很简单,您可以将它集成到您的项目中少于5分钟。

内容


LitePal的快速配置

1.引入Jar包或源码

   使用Android Studio在项目的build.gradle中添加下面依赖:


dependencies {
    compile 'org.litepal.android:core:1.3.2'
}

   使用Eclipse到这里下载好了jar包之后,把它复制到项目的libs目录中就算是引入成功了。

2.配置litepal.xml

   在项目的assets目录下面新建一个litepal.xml文件,内容如下:

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

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

   其中:

  • 是数据库的名字
  • 是数据库的版本号
  • 是数据库的映射模型(数据库表)
  • 是数据库的映射模型的地址(数据库表结构)

3. 配置LitePalApplication

   在AndroidManifest.xml中配置LitePalApplication,如下:

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

   如果是已经有自己的application,则可以继承LitePalApplication或者在代码中加入如下代码:

public class MyApplication extends LitePalApplication {  
    ...  
}

public class MyApplication extends AnotherApplication{  

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

LitePal的建表

   根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),建表先要新建一个模型类,新建一个Province类,如下:

public class Province extends DataSupport {

    private int id;
    private String provinceName;
    private int provinceCode;

    public int getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(int provinceCode) {
        this.provinceCode = provinceCode;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
}

   LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

注意:只有private修饰的字段才会被映射到数据库表中,即如果有某一个字段不想映射的话,就设置为public、protected或者default修饰符就可以了。

   建立好Model后,我们就把他配置到映射列表中,即编辑assest目录下的litepal.xml文件,在标签中加入DEST类的声明,这里要注意,要类的完整类名。

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

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
    </list>

</litepal>

   到这里,就完成了LitePal数据库的配置。

LitePal的升级表

1.添加新表

   首先创建一个新的模型类,然后把它设置到litepal.xml中,如下:

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

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

   然后,把litepal.xml中的version的值加一即可,如下:

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

    <dbname value="cool_weather" />

    <version value="2" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

2.旧表添加新列

   首先在需要升级的模型类中添加新的private修饰的字段,然后再把litepal.xml中的version的值加一即可,这里就不展示代码了,读者可以自己去体验。

LitePal的操作

   LitePal要存储数据,首先模型类要继承DataSupport,即:

public class Province extends DataSupport {
    ...
    ...
}

   继承了DataSupport类之后,这些实体类就拥有了进行CRUD操作的能力。

1.存储操作

   创建对象,为对象的属性进行赋值,最后调用save()方法即可存储,如下:

Province province = new Province();
province.setProvinceName(provinceObject.getString("name"));
province.setProvinceCode(provinceObject.getInt("id"));
province.save();

   更好的是,save()方法是有返回值的,读者可以根据自己需要对其进行判断后做出一些操作:

if (mDest.save()) {  
    Toast.makeText(context, "存储成功", Toast.LENGTH_SHORT).show();  
} else {  
    Toast.makeText(context, "存储失败", Toast.LENGTH_SHORT).show();  
}

2.修改操作

   如果想把Province表中id为1的provinceCode改为”1”,可以这样写:

ContentValues values = new ContentValues();  
values.put("provinceCode", "1");  
DataSupport.update(Pronvice.class, values, 1);  

//或者用下面这种方法

Province updateNews = new Province();  
updateNews.setProvinceCode(1) 
updateNews.update(1);

   如果想把Province表中所有id为”1”的改为”2”可以这样写:

ContentValues values = new ContentValues();  
values.put("provinceCode", "2");  
DataSupport.updateAll(DEST.class, values, "provinceCode = ?", "1");  

//或者用下面这种方法

Province updateNews = new Province();  
updateNews.setProvinceCode("2");  
updateNews.updateAll("setProvinceCode = ?", "1");

3.LitePal的删除操作

   比如说我们想删除Province表中id为2的记录,就可以这样写:

DataSupport.delete(Province.class, 2);

   想把Province表中id为“1”的所有数据删除,就可以这样写:

DataSupport.deleteAll(Province.class, "destId = ? ", "1");

   想把Province表中所有数据删除,就可以这样写:

DataSupport.deleteAll(Province.class);

LitePal的查询操作

   查询Province表中id为1的这条记录,使用LitePal就可以这样写:

Province mProvince = DataSupport.find(Province.class, 1);

   想要获取Province表中的第一条数据,只需要这样写:

Province mProvince = DataSupport.findFirst(Province.class);

   想要获取Province表中的最后一条数据,只需要这样写:

Province mProvince = DataSupport.findLast(Province.class);

   查询Province表中id为1,2,3的这条记录,使用LitePal就可以这样写:

List<Province> mProvince = DataSupport.findAll(Province.class,1,2,3);

   查询所有数据,只需要这样写:

List<Province> mProvince = DataSupport.findAll(Province.class);

   笔者只是对一些简单的操作进行介绍,如想学习更多操作请浏览guolin郭霖老师的博客点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值