在使用LitePal之前,需进行配置。
在main目录下新建assets文件夹,在assets中创建litepal.xml
litepal中代码如下,list中是要创建的数据Book,Category两个类
<?xml version="1.0" encoding="utf-8"?>
<litepal
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.android.com/apk/res/android ">
<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>
Book.class
ublic class Book extends LitePalSupport {
private int id;
private String author;
private double price;
private int pages;
private String name;
private String press;
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public int getId() {
return id;
}
public double getPrice() {
return price;
}
public int getPages() {
return pages;
}
public String getAuthor() {
return author;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setAuthor(String author) {
this.author = author;
}
public void setName(String name) {
this.name = name;
}
public void setPages(int pages) {
this.pages = pages;
}
public void setPrice(double price) {
this.price = price;
}
}
Category.class
public class Category {
private int id;
private String categoryName;
private int categoryCode;
public void setId(int id) {
this.id = id;
}
public void setCategoryCode(int categoryCode) {
this.categoryCode = categoryCode;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public int getId() {
return id;
}
public int getCategoryCode() {
return categoryCode;
}
public String getCategoryName() {
return categoryName;
}
}
在litepal 3.0 DataSupport被弃用,所以这里继承的是LitePalSupport
MainActivity中代码如下
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button createDatabase = findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Connector.getDatabase();
}
});
Button addData = findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages(454);
book.setPrice(16.96);
book.setPress("Unknow");
book.save();
}
});
Button updateData = findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
// book.setPrice(14.95);
// book.setPress("Anchor");
// book.updateAll("name = ? and author = ?","The Lost Symbol",
// "Dan Brown");
book.setToDefault("pages"); //将pages设置为0不能使用book.setPages(0);,要用这个方法,以此类推
book.updateAll();
}
});
Button deleteButton = findViewById(R.id.delete_data);
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LitePal.deleteAll(Book.class,"price < ?","15");
}
});
Button queryButton = findViewById(R.id.query_data);
queryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// List<Book> books = LitePal.findAll(Book.class);
// for(Book book : books){
// Log.d("MainActivity","book name is "+book.getName());
// Log.d("MainActivity","book author is "+book.getAuthor());
// Log.d("MainActivity","book pages is "+book.getPages());
// Log.d("MainActivity","book price is "+book.getPrice());
// Log.d("MainActivity","book press is "+book.getPress());
// }
Book firstBook = LitePal.findFirst(Book.class);//查找第一条数据
Book lastBook = LitePal.findLast(Book.class);//查找第一条数据
// List<Book> books = LitePal.select("name","author")
// .find(Book.class);//指定查询那几列的数据
// List<Book> books = LitePal.where("pages > ?","400")
// .find(Book.class);//指定约束条件查询
// List<Book> books = LitePal.order("price desc")
// .find(Book.class);//指定排序顺序查询
// List<Book> books = LitePal.limit(3)
// .find(Book.class);//指定查询结果数量
// List<Book> books = LitePal.limit(3).offset(1)
// .find(Book.class);//指定查询结果的怕偏移量,表示查询3~3+1的数据
// List<Book> books = LitePal.select("name","author","pages")
// .where("pages > ?","400")
// .order("pages")
// .limit(10)
// .offset(10)
// .find(Book.class);//连缀组合查询
// Cursor cursor = LitePal.findBySQL(
// "select * from Book where pages > ? and price < ?",
// "400","20"
// );//原生SQl查询
}
});
}
}
大致罗列了LitePal的创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。
之后可以打开数据库进行查看,如不了解如何打开数据库查看可参考:安卓学习笔记–SQLite数据库储存