Android LitePal的基本用法
程序员文章站
2024-03-17 09:40:10
...
一、首先要配置LitePal
配置方法如下:
1、编辑app/build.gradle文件,在dependencies中加上
implementation 'org.litepal.android:core:1.4.1'
2、在app/src/main目录新建一个文件夹assets,然后在assets目录,右键New->File->新建一个文件名为litepal.xml的文件,记住要把.xml也打进去。然后编辑litepal.xml的内容为:
<?xml version="1.0" encoding="UTF-8" ?>
<litepal>
<dbname value="BookStore"></dbname>
<version value="2"></version>
<list>
<mapping class="com.example.litepaltest.Book"></mapping>
<mapping class="com.example.litepaltest.Category"></mapping>
</list>
</litepal>
其中那两行mapping,是把Book类和Category类添加到映射模型列表当中。
3、修改AndroidManifest.xml中的代码,在<application中加入一行
android:name="org.litepal.LitePalApplication"
这样就配置完成了。
**
二、创建和升级数据库
**
1、新建Book类和Category类:
package com.example.litepaltest;
import org.litepal.crud.DataSupport;
public class Book extends DataSupport {
private int id;
private String author;
private double price;
private int pages;
private int another;
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;
}
public void setAnother(int another){
this.another=another;
}
public int getAnother(){
return another;
}
}
package com.example.litepaltest;
import android.provider.ContactsContract;
import org.litepal.crud.DataSupport;
public class Category extends DataSupport {
private int id;
private String categoryName;
private int categoryCode;
public void setId(int id) {
this.id = id;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public void setCategoryCode(int categoryCode) {
this.categoryCode = categoryCode;
}
}
2、在activity_main.xml中,添加几个按钮,用于实现不同的操作
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/create_database"
android:text="Create database"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/add_data"
android:text="Add data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/update_data"
android:text="Update data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/delete_data"
android:text="Delete data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/query_data"
android:text="Query data"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
3、在MainActivity中,注册按钮监听器
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button createDatabase=(Button)findViewById(R.id.create_database);
Button addData=(Button)findViewById(R.id.add_data);
Button updateData=(Button)findViewById(R.id.update_data);
Button deleteData=(Button)findViewById(R.id.delete_data);
Button queryData=(Button)findViewById(R.id.query_data);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LitePal.getDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book book=new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages(454);
book.setPrice(16.96);
book.setAnother(1);
book.save();
Book book2=new Book();
book2.setName("The Lost Symbol");
book2.setAuthor("Dan Brown");
book2.setPages(510);
book2.setPrice(19.95);
book2.setAnother(2);
book2.save();
}
});
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book book=new Book();
//新建一个book实例,然后直接调用setPrice()方法设置要更新的数据,使用updateAll()方法,更新所有书名是The Da Vinci Code且作者是Dan Brown的数据的价格为10.99
book.setPrice(10.99);
book.updateAll("name=? and author=?","The Da Vinci Code","Dan Brown");
//设置为默认值的方法
//Book book=new Book();
// book.setToDefault("pages");
// book.updateAll();
//以上几行代码表示把所有书的页数都修改为0,因为int的默认值是0,setToDefault是设置为默认值的意思
}
});
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//删除所有价格小于15的书
//第一个参数是表,后面两个参数是约束条件
DataSupport.deleteAll(Book.class,"price<?","15");
}
});
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//查找Book表的所有数据
List<Book> books=DataSupport.findAll(Book.class);
for(Book book:books){
Log.d("MainActivity","book name is"+book.getName());
Log.d("MainActivity","book price is"+book.getPrice());
}
}
});
}
LitePal.getDatabase()创建了一个数据库,名为BookStore,其中有两个表Book和Category,这些信息都是在litepal.xml中设置的。如果需要添加某个表的属性,只需在那张表对应的类里添加想要添加的属性即可;如果想要新建一个表格,则在litepal.xml的mapping中添加,然后新建对应的类(需继承DataSupport才能进行后续的添加删除等操作)即可,修改完毕后,最后将litepal.xml的<version value值加1,表示更新.
下一篇: LitePal 的基本用法