Kotlin中使用Litepal

242 阅读2分钟

保存复杂数据类型还是得用数据库。用数据库就可以用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条件就好,比较简单。

很好用,下次一定!!!