LitePal是什么?
LitePal是Android开源的数据库框架,采用了对象关系映射(ORM)模式,方便开发者对数据库进行操作 。可通过ADB命令查看并操作数据库。
LitePal使用
添加依赖:
implementation 'org.litepal.android:core:1.6.1'
修改Manifest文件中的代码,在<Application>中指定name:
android:name="org.litepal.LitePalApplication"
如果已有自定义Application,则在其onCreate()中调用:
LitePalApplication.initialize(context);
创建数据库
新建名为Book的javabean类:
public class Book {
private int id;
private String author;
private double price;
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 String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在main目录下新建assets目录,再新建litepal.xml文件,其中dbname指定数据库名,version指定数据库版本号,list标签指定映射模型:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore"/>
<version value="1"/>
<list>
<mapping class="com.example.demo0.Book"/>
</list>
</litepal>
具体创建只需要调用以下方法:
Connector.getDatabase();
更新数据库
添加数据库字段可直接修改javabean类,新增数据库表则需要在litepal.xml添加映射,再次调用Connector.getDatabase()方法时会自动更新。
添加数据
首先要让javabean继承DataSupport
public class Book extends DataSupport
新建Book实例,最后调用save()方法即完成添加:
Book book=new Book();
book.setName("tom");
book.setAuthor("john");
book.setPrice(10);
book.setId(1);
book.save();
查询数据
查询全部数据:
List<Book> books = DataSupport.findAll(Book.class);
for (Book book : books) {
Log.d("MainActivity", book.getName() + book.getAuthor() + book.getPrice() + book.getId());
}
查询指定列:
List<Book> books = DataSupport.select("name").find(Book.class);
按条件查询:
List<Book> books = DataSupport.where("name=?", "tom").find(Book.class);
对结果排序:
List<Book> books = DataSupport.order("id desc").find(Book.class);
限定结果数量:
List<Book> books = DataSupport.limit(2).find(Book.class);
更新数据
Book book = new Book();
book.setPrice(20);
book.updateAll("name=?", "tom");
删除数据
不指定条件则为删除全部数据
DataSupport.deleteAll(Book.class, "price=?", "20");
使用SQL访问
litepal也支持原生sql访问,但这样返回的结果为Cursor实例
Cursor cursor = DataSupport.findBySQL("select * from book");