保存复杂数据类型还是得用数据库。用数据库就可以用LitePal,下面是kotlin中使用LitePal的一些方法记录
引入依赖
dependencies {
implementation 'org.litepal.guolindev:core:3.2.3'
}
设置litepal.xml
配置的位置在asserts文件夹下,新建一个xml的文件。这里面主要是写自己的数据库名以及表名的定义,还有数据映射类的配置。详细可以看郭神的LitePal的Readme
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名-->
<dbname value="demo"></dbname>
<list>
<!--映射表的定义-->
<mapping class="(填上映射类的路径)"></mapping>
</list>
<!--version是数据库的版本号-->
<version value="1"></version>
</litepal>
修改Manifest文件
<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>
如果项目中已经有一个application类了,就让自己的app继承LitePalApplication 或者在这个application里面初始化Litepal
方法一
class MyApp:LitePalApplication(){
...
}
方法二
就不用在manifest里面初始化了
class MyApp:Application(){
override fun onCreate() {
super.onCreate()
LitePal.initialize(this)
}
}
定义自己的映射类
kotlin可以使用data class 来,懒人必备,省事点
data class NewsBean(
var data:String
var title:String
) : LitePalSupport()
不用这个也行,可以直接普通的class 定义,不再赘述了。可以看一下readme
增删改查
仅列举部分,详细还得看看文档,有中文版本的
保存/增加
val bean = NewsBean(
data = data,
title = title
)
bean.save()//return true if save success
删除
可以指定id进行删除,也可以写类似sql条件判断进行删除
LitePal.deleteAll(
NewsBean::class.java,
"title = ?","震惊!竟然要连续上7天班!")
比如这样,我就删除了所有标题为震惊!竟然要连续上7天班! 的数据。
改
改的话,其实就是用update,一样也有指定id更新的。一样的也是更新了所有标题为震惊!竟然要连续上7天班! 的数据
val bean = NewsBean(
data = data,
title = title
)
bean.updateAll(
NewsBean::class.java,
"title = ?","震惊!竟然要连续上7天班!")
查
就直接用where加上sql条件就好,比较简单。
很好用,下次一定!!!