Android开源库LitePal数据库
2020-11-17 本文已影响0人
你的益达233
配置
1、build.gradle
dependencies {
implementation 'org.litepal.guolindev:core:3.2.2'
}
因为数据库xx.db是在data/data/xxx.xxx.xxx里面生成的,所以不需要权限
2、assets文件夹下建litepal.xml,文件名不能改
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore" />
<version value="1" />
<list>
<mapping class="com.cong.litepaldemo.bean.Book" />
</list>
</litepal>
数据库名字为BookStore,版本为1,数据库中有一张表Book,要完整路径
3、Application初始化
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
}
4、混淆
-keep class org.litepal.** {
*;
}
-keep class * extends org.litepal.crud.DataSupport {
*;
}
-keep class * extends org.litepal.crud.LitePalSupport {
*;
}
使用
1、创建数据库
任意地方调一次此方法即创建数据库
LitePal.getDatabase();
调完此方法可以去下面操作,查看是否真的创建成功了
2、创建表
我觉得创建表的方式是LitePal数据库的精华所在,它的表就是对应bean的类
如:
public class Book extends LitePalSupport {
private int id;
private String author;
private double price;
private int pages;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后在litePal.xml中添加该表
<list>
<mapping class="com.cong.litepaldemo.bean.Book" />
</list>
这样就可以了,不继承LitePalSupport也是可以的,但是如果后面你有增删改查操作就必须继承LitePalSupport,因为增删改查操作在LitePalSupport里面,就相当于我让表自己有增删查
更新表或者说升级表
比如有了新需求,要在某表新增键,也是很简单
1、Book实体类新增变量,记得get,set方法
2、litepal.xml的version加1
等下次操作到该表时就自动更新表
3、增加数据
Book book = new Book();
book.setName("第一行代码");
book.setAuthor("guolin");
book.setPages(454);
book.setPrice(16.02);
book.save();
记得save结尾
4、更新数据
Book book = new Book();
book.setPrice(14.95);
book.updateAll("name = ?","第一行代码");
更新还有很多中方法
5、删除数据
LitePal.deleteAll(Book.class,"name = ?","第一行代码");
6、查找数据
List<Book> books = LitePal.findAll(Book.class);
因为我没在项目中用,没法展开说的更深入,遇到什么坑。它底层也是用SQLite,只是不单单封装这么简单,可以说是换了中思路。如果项目中有用SQLite,在重构,不妨用LitePal