Android 数据持久化之LitePal

Android 数据持久化之LitePal

LitePal是一个开源数据库,GitHub路径为:https://github.com/LitePalFramework/LitePal,上面有详细信息。它采用了ORM的模式,把我们一些常用的数据库操作进行了封装,使得不用编写一行SQL语句就能进行相关的增删改查。

一、在AS项目中,集成LitePal使用环境,创建数据库

1.在build.gradle文件中:
 dependencies {
        implementation 'org.litepal.android:java:3.0.0'
    }
2.在app/src/main路径下新建assets目录,并在该目录下新建 litepal.xml文件
  <?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <!--数据库名-->
        <dbname value="testlitepal"></dbname>
        <!--数据库版本-->
        <version value="1"></version>
        <!--指定所有的映射模型-->
        <list>
            <!--此处指定人物类模型,Person为最简单的javabean-->
            <mapping class="com.xie.com.testfragment.domain.Person"></mapping>
        </list>
    </litepal>

Person类的JavaBean如下:

 public class Person {
        private String name;
        private int age;
        private String sex;
        private float point;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public float getPoint() {
            return point;
        }
    
        public void setPoint(float point) {
            this.point = point;
        }
    }
3.在AndroidManifest.xml中配置LitePalApplication
<manifest>
    <application
        android:name="org.litepal.LitePalApplication"
        ...
    >
        ...
    </application>
</manifest>
4.执行操作,testlitepal数据库就能被成功执行,且此时里面会包含一张person的表
 Connector.getDatabase();

二、升级数据库

LitePal升级数据库很简单,只需修改版本号即可。如现在我想在Person表中增加一列地址address并且新增一张新表Student.

1.直接在Person实体类中添加address属性
  private String address;
    
    public String getAddress() {
        return address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
2.新建实体类Student
  public class Student {
        private String name;
        private int age;
        private String sex;
        private float point;
        private String address;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public float getPoint() {
            return point;
        }
    
        public void setPoint(float point) {
            this.point = point;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
3.最后在LitePal.xml中添加mapping对象映射,重新调用Connector.getDatabase();即可
 <mapping class="com.xie.com.testfragment.domain.Student"></mapping>

三、向表中添加数据

1.修改Student,使之继承LitePalSupport
public class Student extends LitePalSupport {
    ...
}
2.数据添加操作,只需要新建Student对象,给对象赋值完成后,直接调用save方法即可
  //LitePal数据添加
    Student student = new Student();
    student.setName("张三");
    student.setSex("男");
    student.setAge(15);
    student.setPoint(89);
    student.setAddress("重庆");
    student.save();

四、更新表中的数据

1.执行更新操作的方法是updateAll,此方法可带条件,不带则是全部更新。
Student student = new Student();
student.setAge(18);
student.setAddress("北京");
student.updateAll("name=?","张三");
2.注意:在使用updateAll方法时,如果我们要把一个字段更新成默认值时,是不能用上面的set方法来设置的。int类型的默认值是0,boolean类型的默认值false,String类型的默认值是null。如当我们要把年龄age字段设为默认值,直接student.setAge(0)是无效的。要想把字段值设为默认值,需要用setToDefault方法。下面执行的语句代表把姓名为张三的年龄age字段的值设为默认值0.且地址address设置为北京。
  Student student = new Student();
    student.setToDefault("age");
    student.setAddress("北京");
    student.updateAll("name=?","张三");

五、删除表中的数据

删除表中数据时,deleteAll中写条件。

 LitePal.deleteAll(Student.class,"age > ?","15");

六、查询表的数据

1.查询表中的数据
 //查询student表中的所有数据
    List<Student> studentList = LitePal.findAll(Student.class);
    //查询表中的第一条数据
    Student student1 = LitePal.findFirst(Student.class);
    //查询表中的最后一条数据
    Student student2 = LitePal.findLast(Student.class);
2.查询表中年龄大于15的学生
 //查询表中年龄大于15的学生
    List<Student> studentList1 = LitePal.where("age > ?","15").find(Student.class);

ps:

1.若是你的LitePal版本较低,实体类继承的时候应该继承DataSupport而不是LitePalSupport,而进行删除查询的时候,也应该是DataSupport,而不是LitePal。
2.更多增删改查的操作语句请参考LitePal文档:https://github.com/LitePalFramework/LitePal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值