LitePal学习(二)——数据库升级

作者: 奔跑的佩恩 | 来源:发表于2017-11-28 10:11 被阅读405次

前言

LitePal学习(一)——配置讲过了LitePal的基本配置,这里讲讲LitePal的数据库升级吧。

讲到的知识点有

  • 在旧版本中如何添加新表
  • 在旧版本的表中如何添加列

下面就来具体讲讲

一.在旧版本中如何添加新表

我们先回顾下LitePal学习(一)——配置的内容,在之前我们已经建了一个Person表,如果我们现在版本升级,需要在新版本中添加另一张表Animal怎么处理呢,首先列出Animal类的代码,当然还是得继承我们得数据库data类DataBaseModel,代码如下:

package com.android.model;

/**
 * Title:
 * Description:
 * <p>
 * Created by pei
 * Date: 2017/11/27
 */
public class Animal extends DataBaseModel {

    private String name;
    private int weight;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

}

然后在litepal.xml中注册数据库表:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--数据库文件名-->
    <dbname value="demo" ></dbname>
    <!--数据库版本号-->
    <version value="2" ></version>
    <!--表名-->
    <list> <mapping class="com.android.model.Person"></mapping>  </list>
    <list> <mapping class="com.android.model.Animal"></mapping>  </list>
</litepal>

之前数据库得版本version为1,这里也要版本号增1,变为2

接下来看看MainActivity中得调用:

   //存储
                Person person=new Person();
                person.setName("花花");
                person.setSex("女");
                person.setAge(25);
                //储存状态返回的是布尔值
                boolean save=person.save();
                if(save){
                    LogUtil.e(MainActivity.class,"====存储成功======");
                }else{
                    LogUtil.e(MainActivity.class,"====存储失败======");
                }
                //查询
                List<Person> allPersons = DataSupport.findAll(Person.class);
                for (Person p : allPersons) {
                    LogUtil.e(MainActivity.class, "====person======" + p.toString());
                }

                //存储
                Animal animal=new Animal();
                animal.setName("小狗");
                animal.setWeight(50);
                animal.save();
                //查询
                List<Animal> allAnimals = DataSupport.findAll(Animal.class);
                if(CollectionUtil.isEmpty(allAnimals)){
                    LogUtil.e(MainActivity.class, "====empty======");
                }else{
                    for (Animal a : allAnimals) {
                        LogUtil.e(MainActivity.class, "====person======" + a.toString());
                    }
                }

看看打印得结果吧:


4.png
二.在旧版本得基础上添加新列

以Animal类为例,现在需要在表中增加一个year列,直接在Animal类中添加year属性,代码如下:

package com.android.model;

/**
 * Title:
 * Description:
 * <p>
 * Created by pei
 * Date: 2017/11/27
 */
public class Animal extends DataBaseModel {

    private String name;
    private int weight;
    private int year;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }
}

在litepal.xml中修改version版本号为3,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--数据库文件名-->
    <dbname value="demo" ></dbname>
    <!--数据库版本号-->
    <version value="3" ></version>
    <!--表名-->
    <list> <mapping class="com.android.model.Person"></mapping>  </list>
    <list> <mapping class="com.android.model.Animal"></mapping>  </list>
</litepal>

在MainActivity中调用如下:

                //存储
                Person person=new Person();
                person.setName("花花");
                person.setSex("女");
                person.setAge(25);
                //储存状态返回的是布尔值
                boolean save=person.save();
                if(save){
                    LogUtil.e(MainActivity.class,"====存储成功======");
                }else{
                    LogUtil.e(MainActivity.class,"====存储失败======");
                }
                //查询
                List<Person> allPersons = DataSupport.findAll(Person.class);
                for (Person p : allPersons) {
                    LogUtil.e(MainActivity.class, "====person======" + p.toString());
                }

                //存储
                Animal animal=new Animal();
                animal.setName("小狗");
                animal.setWeight(50);
                animal.save();
                //查询
                List<Animal> allAnimals = DataSupport.findAll(Animal.class);
                if(CollectionUtil.isEmpty(allAnimals)){
                    LogUtil.e(MainActivity.class, "====empty======");
                }else{
                    for (Animal a : allAnimals) {
                        LogUtil.e(MainActivity.class, "====person======" + a.toString());
                    }
                }

打印结果:

 E/pei: MainActivity:====存储成功======
 E/pei: MainActivity:====person======age=25  name=花花  sex=女  
 E/pei: MainActivity:====person======age=25  name=花花  sex=女  
 E/pei: MainActivity:====person======name=小狗  weight=50  year=0   
 E/pei: MainActivity:====person======name=小狗  weight=50  year=5  

ok,今天关于litePal数据库得升级就讲到这里,谢谢欸。

相关文章

  • LitePal学习(二)——数据库升级

    前言 在LitePal学习(一)——配置讲过了LitePal的基本配置,这里讲讲LitePal的数据库升级吧。 讲...

  • Android数据库框架 - LitePal

    Android数据库框架 - LitePal学习笔记

  • Android数据存储之Litepal数据库存储

    本文目录:一、配置Litepal二、创建数据库三、升级数据库四、添加数据五、更新数据六、删除数据七、查询数据 (内...

  • Android - base - LitePal

    Android 数据库ORM:对象关系映射框架 大纲 LitePal 环境配置 核心类 创建和升级数据库 CRUD...

  • Android数据库框架 - LitePal学习笔记

    Android数据库框架 - LitePal学习笔记 简述 LitePal是郭神(郭霖)在2014年的杰作,三年后...

  • Android数据库之LitePal笔记

    郭神博客传送门 Android数据库高手秘籍(二)——创建表和LitePal的基本用法 一. 什么是LitePal...

  • 安卓开发

    今天学习了数据库的一些基本操作:增删改查。还运用了litepal来操作数据库,litepal的设置以及运行环境有了了解

  • 2018-06-23 LitePal

    Android数据库框架 - LitePal LitePal是一款开源的Android数据库框架,它采用了对象关系...

  • LitePal学习(三)——增删改查

    前言 本文参考Android数据库高手秘籍(五)——LitePal的存储操作官网 下面讲讲litepal数据库的增...

  • LitePal数据库

    1.创建和升级LitePal数据库  利用面向对象的思维来操作数据库,而不再使用SQL语句。首先定义一个JavaB...

网友评论

    本文标题:LitePal学习(二)——数据库升级

    本文链接:https://www.haomeiwen.com/subject/fscdbxtx.html