一、配置LitePal
1.引入dependencies闭包
编辑app/build.gradle文件,在dependencies闭包中添加
dependencies {
compile 'org.litepal.android:core:1.3.0'
}
2.配置litepal.xml文件
在app/src/main目录新建assets目录,然后新建litepal.xml,编辑内容
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore"></dbname>
<version value="1"></version>
<list>
</list>
</litepal>
<dbname>标签为数据库名,<version>标签为版本号,<list>标签用于数据库表。
3.配置AndroidManifest.xml
添加 android:name="org.litepal.LitePalApplication"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.luckychuan.litepaldemo">
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</application>
</manifest>
二、创建和升级数据库
1.创建模型类Book类
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;
}
}
必须继承DataSupport类才能进行CRUD操作。Book类就会对应数据库中的Book表,在Book类中定义的id,author,price,pages,name即为表中的每一列。
2.修改litepal.xml代码
<list>
<mapping class="com.example.luckychuan.litepaldemo.Book"></mapping>
</list>
使用<mapping>标签配置数据库表(使用完整的类名)。
3.在java代码中创建数据库
在MainActivity代码中调用Connector.getDatabase()方法完成数据库的创建。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库的按钮
((Button)findViewById(R.id.create_db_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Connector.getDatabase();
}
});
}
三、添加数据
((Button) findViewById(R.id.insert_btn)).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(123);
book.setPrice(10.00);
book.save();
}
});
四、更新数据
((Button) findViewById(R.id.update_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book = new Book();
book.setPages(233);
book.updateAll("name = ? and author = ?", "The Da Vinci Code", "Dan Brown");
}
});
五、删除数据
((Button) findViewById(R.id.delete_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//删除所有数据
DataSupport.deleteAll(Book.class);
//满足条件的删除
DataSupport.deleteAll(Book.class, "price < ?", "100");
}
});
六、查询数据
1.查询所有数据
((Button) findViewById(R.id.query_all_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Book> books = DataSupport.findAll(Book.class);
for (Book book : books) {
Log.d(TAG, "onClick: " + book.getId());
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
Log.d(TAG, "onClick: " + book.getPages());
Log.d(TAG, "onClick: " + book.getPrice());
}
}
});
2.带条件的查询
((Button) findViewById(R.id.query_btn)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//查询第一条数据
Book firstBook = DataSupport.findFirst(Book.class);
Log.d(TAG, "onClick: " + firstBook.getId());
Log.d(TAG, "onClick: " + firstBook.getName());
Log.d(TAG, "onClick: " + firstBook.getAuthor());
Log.d(TAG, "onClick: " + firstBook.getPages());
Log.d(TAG, "onClick: " + firstBook.getPrice());
//查询最后一条数据
Book lastBook = DataSupport.findLast(Book.class);
Log.d(TAG, "onClick: " + lastBook.getId());
Log.d(TAG, "onClick: " + lastBook.getName());
Log.d(TAG, "onClick: " + lastBook.getAuthor());
Log.d(TAG, "onClick: " + lastBook.getPages());
Log.d(TAG, "onClick: " + lastBook.getPrice());
//select()方法用于查询哪几列
List<Book> selectBooks = DataSupport.select("name","author").find(Book.class);
for (Book book : selectBooks) {
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
}
List<Book> whereBooks = DataSupport.where("name = ?","The Da Vinci Code").find(Book.class);
for (Book book : whereBooks) {
Log.d(TAG, "onClick: " + book.getId());
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
Log.d(TAG, "onClick: " + book.getPages());
Log.d(TAG, "onClick: " + book.getPrice());
}
//order()方法用于对查询结果的排列方式
List<Book> orderBooks = DataSupport.order("price desc").find(Book.class);
for (Book book : orderBooks) {
Log.d(TAG, "onClick: " + book.getId());
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
Log.d(TAG, "onClick: " + book.getPages());
Log.d(TAG, "onClick: " + book.getPrice());
}
//limit()方法用于对查询结果的限制,如limit(3)表示只查询前三条数据
List<Book> limitBooks = DataSupport.limit(2).find(Book.class);
for (Book book : limitBooks) {
Log.d(TAG, "onClick: " + book.getId());
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
Log.d(TAG, "onClick: " + book.getPages());
Log.d(TAG, "onClick: " + book.getPrice());
}
//offset()方法用于查询结果的偏移量,如offset(1)表示偏移1条数据,从第2条数据开始查询
//offset()方法和limit()方法连用,共同组成了SQL当中的limit关键字
List<Book> offsetBooks = DataSupport.limit(2).offset(1).find(Book.class);
for (Book book : offsetBooks) {
Log.d(TAG, "onClick: " + book.getId());
Log.d(TAG, "onClick: " + book.getName());
Log.d(TAG, "onClick: " + book.getAuthor());
Log.d(TAG, "onClick: " + book.getPages());
Log.d(TAG, "onClick: " + book.getPrice());
}
}
});
源代码:https://github.com/Luckychuan/LitePalDemo.git
转载请注明原文地址: https://ju.6miu.com/read-33859.html