LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。
学习了郭霖大神的第一行代码第二版
1、配置LitePal
在build.gradle文件中添加
dependencies {
......
compile 'org.litepal.android:core:1.3.2'
}在main目录下添加assets目录,在其目录中添加litepal.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<litepal>
<dbname value="BookStore" ></dbname>
<version value="1"></version>
<list>
</list>
</litepal>在AndroidManifest.xml中配置LitePalApplication
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" .../>2、创建和升级数据库(以面向对象的思维)Book类--> book表
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 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中添加映射
<litepal>
<dbname value="BookStore" ></dbname>
<version value="1"></version>
<list>
<mapping class="com.example.litepaltest.Book"></mapping>
</list>
</litepal>布局文件layout_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/create_database"
android:text="Create Database"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/add_data"
android:text="Add Data"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/update_data"
android:text="Update Data"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/delete_data"
android:text="Delete Data"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/query_data"
android:text="Query Data"/>
</LinearLayout>主MainActivity中
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Connector.getDatabase(); //创建数据库
}
});可以通过Adb shell及sqlite3相关命令查看表是否创建成功

升级数据库,将litepal.xml中version值加1即可
如:Book中添加出版社press字段
package com.example.litepaltest;
import org.litepal.crud.DataSupport;
public class Book extends DataSupport {
......
private String press;
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
}
或者添加新表Category
package com.example.litepaltest;
public class Category {
private int id;
private String categoryName;
private int categoryCode;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public int getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(int categoryCode) {
this.categoryCode = categoryCode;
}
}
修改litepal.xml文件
<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>重新运行程序即可
3、添加数据 Book类继承DataSupport
Button addData = (Button) findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setId(1);
book.setAuthor("ZhuZiqing");
book.setName("Blackground");
book.setPages(15);
book.setPrice(10.55);
book.setPress("RenMingPress");
book.save();
}
});查表后,可看到数据已经添加

4、更新数据
Button updateData = (Button) findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setId(2);
book.setAuthor("ShenCongwen");
book.setName("BianCheng");
book.setPages(300);
book.setPrice(15.55);
book.setPress("RenMingPress");
book.save();
book.setPrice(16.66);
book.save();
//第二种更新方法
Book book1 = new Book();
book1.setPrice(17.00);
book1.setPress("ZhongNanWenYi");
book1.updateAll("name = ? and author = ?", "BianCheng", "ShenCongwen");
}
});
5、删除数据
Button deleteData = (Button) findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataSupport.deleteAll(Book.class, "price > ?", "15");
}
});
6、查询数据
Button queryData = (Button) findViewById(R.id.query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Book> list = DataSupport.findAll(Book.class);
for(Book book:list){
Log.d("MainActivity","The Book id"+book.getId());
Log.d("MainActivity","The Book author"+book.getAuthor());
Log.d("MainActivity","The Book price"+book.getPrice());
Log.d("MainActivity","The Book press"+book.getPress());
}
}
});
版权声明:本文为u010473556原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。