Android LitePal使用总结

LitePal

概述

  • LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包只有100k不到

添加依赖

implementation 'org.litepal.guolindev:core:3.2.3'

使用

初始化数据库

一、在Application里面进行初始化操作

class BaseApp : Application() {
    override fun onCreate() {
        super.onCreate()
        LitePal.initialize(this)
    }
}

二、建立ORM对象

data class Course(
    val name: String,
    val teacher: String,
    val price: Double,
    val date: Date
) : LitePalSupport() {
    val id: Long = 0

    override fun toString(): String {
        return "Course(id=$id, name=$name, teacher=$teacher, price=$price, date=$date)"
    }
}

data class Teacher(
    val name: String,
    val age: Int,
    val desc: String
) : LitePalSupport() {
    val id: Long = 0
}

三、配置文件

assets目录下新建litepal.xml文件,并在其配置数据

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="mylitepal" />
    <version value="1" />
    <list>
        <mapping class="com.example.myapplication.litepal.Course" />
        <mapping class="com.example.myapplication.litepal.Teacher" />
    </list>
</litepal>

增加数据

增加一条数据

val course = Course("Java", "小红", 12.04, Date())
course.save()

增加多条数据

val courseList = arrayListOf<Course>()
courseList.add(Course("JavaScript", "小花", 23.06, Date()))
courseList.add(Course("HTML", "小白", 13.06, Date()))
courseList.add(Course("CSS", "小黑", 33.06, Date()))
LitePal.saveAll(courseList)

删除数据

删除指定id数据

LitePal.delete(Course::class.java, 1)

删除添加数据

LitePal.deleteAll(Course::class.java, "teacher = ? and id > 1", "小花")

删除表内所有数据

 LitePal.deleteAll(Course::class.java)

修改数据

修改指定id数据

val values = ContentValues().apply {
    put("teacher", "小白")
}
LitePal.update(Course::class.java, values, 1)

修改指定条件数据

val values = ContentValues().apply {
    put("teacher", "小👋")
}
LitePal.updateAll(Course::class.java, values, "name = ? and id > 5", "CSS")

查询数据

简单查询

//查询id为1的数据
val course = LitePal.find(Course::class.java, 1)
binding.tvContent.text = course.toString()

//查询表内第一条数据
val course2 = LitePal.findFirst(Course::class.java)
binding.tvContent.text = course2.toString()

//查询表内所有数据
val courseList = LitePal.findAll(Course::class.java)
binding.tvContent.text = courseList.toString()

条件查询

val courseList = LitePal.where("id > ?", "5")
.order("price desc")
.find(Course::class.java)
binding.tvContent.text = courseList.toString()

事务支持

try {
    LitePal.beginTransaction()

    val course = LitePal.find(Course::class.java, 2)
    val values = ContentValues().apply {
        put("price", 100.01)
    }
    LitePal.update(Course::class.java, values, course.id)

    LitePal.setTransactionSuccessful()
} catch (e: Exception) {
    e.printStackTrace()
} finally {
    LitePal.endTransaction()
}

数据库升级

新增表

一、新建ORM对象

data class Comment(val content: String) : LitePalSupport() {
    val id: Long = 0
}

二、添加配置

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="mylitepal" />
    <version value="2" />
    <list>
        <mapping class="com.example.myapplication.litepal.Course" />
        <mapping class="com.example.myapplication.litepal.Teacher" />
        <mapping class="com.example.myapplication.litepal.Comment" />
    </list>
</litepal>

注:可以通过调用Connector.getDatabase()触发数据库更新

新增表字段

直接修改ORM类,并更新配置文件版本号

data class Course(
    val name: String,
    val teacher: String,
    val price: Double,
    val date: Date,
    @Column(defaultValue = "很好") val comment: String //新增字段
) : LitePalSupport() {
    val id: Long = 0
}

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值