欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,表示更新.