Android学习--LitePal使用

       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版权协议,转载请附上原文出处链接和本声明。