开源库LitePal的用法

来源:互联网 发布:淘宝散片cpu可靠吗 编辑:程序博客网 时间:2024/05/17 23:07

前言


   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郭霖老师的博客点这里

原创粉丝点击