欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LitePal 2.0版本 使用

程序员文章站 2022-07-12 13:14:45
...

本文转载郭霖的博客,感谢郭神的分享。
原文地址:https://blog.csdn.net/guolin_blog/article/details/80586028

今天很高兴告诉大家一个好消息,LitePal又出新版本了。

算了一下,上个版本1.6.1已经是半年前推出的了,而整个开源项目自2014年推出以来,我已经维护了有四年之久。这四年以来,我不断地完善着LitePal的代码,修复各种大家提出的bug,以及补充各式各样好用的新功能。而今天,时隔半年,LitePal终于迎来了一次大的版本更新,正式发布了2.0.0版本!

从1.6.1直接跨越到2.0.0,说明这次的升级变化还是非常大的。在2.0.0版本当中,我重构了内部大量的代码,使得LitePal整体的架构更加合理和清晰,API接口更加科学,并且重写了数据库的同步处理机制,解决了很多并发操作数据库的问题。最重要的是,LitePal 2.0.0版本现在全面支持Kotlin了!以后不管你是用Java还是Kotlin开发Android程序,都可以100%兼容地使用LitePal,是不是有点小激动呢?那么下面我们就来具体学习一下如何使用新版本的LitePal吧。

升级到2.0.0

升级的方式很简单,如果你使用的是Android Studio,只需要在build.gradle中修改一下配置即可:

dependencies {
    implementation 'org.litepal.android:core:2.0.0'
    //在练习时,使用 compile 
    //compile 'org.litepal.android:core:2.0.0'
}

如果你使用的还是Eclipse,那么可以点击 这里 下载最新版的jar包。

新版本变化

需要大家注意的是,2.0.0版本中几乎所有的API接口全部都变了。但是请不要惊慌,2.0.0版本是完全向下兼容的,也就是说,大家不用担心升级之后会出现大量的错误,之前所有的代码都还是可以正常运行的,只是原来旧的API会被标识为废弃,提醒大家尽快使用新的API而已,如下图所示:
LitePal 2.0版本 使用

当然,大家也不用一听到所有的API都变了就觉得恐慌,其实一切的变更都是有规律可循的。

那么我们都知道,LitePal本身的用法就非常简单,因此升级新API的过程也同样是非常简单的,下面我们一步步来看。

首先是实体类的继承要进行修改,这是我们过去的写法:
LitePal 2.0版本 使用

可以看到,现在DataSupport类已经被标为了废弃,虽然暂时还可以正常工作,但是不建议再继续使用了,从LitePal 2.0.0版本开始建议使用LitePalSupport类,我们将代码改成如下所示即可:
LitePal 2.0版本 使用

将实体类的继承结构更改为LitePalSupport之后,得到的一个隐形好处就是所有的实例CRUD方法都会自动升级到2.0.0版本了,如save()方法,update()方法,delete()方法等等。因此,我们原来存储一条数据该怎么写,现在就还怎么写,比如:

Song song = new Song();
song.setName("hello");
song.setDuration("180");
song.save();

这样就可以存储一条数据到数据库当中了,和之前的写法没有任何变化,但是却使用了LitePal 2.0.0中的最新接口了,因为这个save()方法是来自于LitePalSupport类的。

接下来第二步需要升级的是静态CRUD方法。原来所有的静态CRUD方法都是封装在DataSupport类当中的,比如刚才我们演示过的查询数据库的中数据可以这么写:
LitePal 2.0版本 使用

而现在,所有的静态CRUD方法都被移动到了LitePal类当中,因此我们只需要将DataSupport修改为LitePal即可,其他的用法都是完全不变的,如下所示:
LitePal 2.0版本 使用

没错,升级过程就是这么简单。总结一下其实主要就只有两点,如果你是在继承结构中使用了DataSupport,那么就将它改为LitePalSupport,如果你是调用了DataSupport中的静态方法,那么就将它改为LitePal。

不过最后还有一件事需要注意,如果你的项目代码启用了混淆,那么混淆的配置也需要进行相应的修改才行,原来的混淆配置如下所示:

-keep class org.litepal.** {
    *;
}

-keep class * extends org.litepal.crud.DataSupport {
    *;
}

而由于DataSupport类已经被废弃了,因此这里也需要将混淆文件中的DataSupport改成LitePalSupport才行,如下所示:

-keep class org.litepal.** {
    *;
}

-keep class * extends org.litepal.crud.LitePalSupport{
    *;
}

将以上的操作都完成之后,那么恭喜你,你的代码已经完全升级到LitePal 2.0.0版本了。
再次感谢郭神:
版权声明:本文出自郭霖的博客。
https://blog.csdn.net/sinyu890807/article/details/80586028