Android LitePal的簡單使用

前言

爲了豐富這個對於Android SQLite的使用,特別寫了這篇文章,也算是做一個筆記吧。
效果圖

在這裏插入圖片描述

正文

LitePal是Android中比較輕便的開源數據庫框架,是郭霖大神寫的,本文只做最簡單的使用。

① 創建項目

在這裏插入圖片描述
然後是導入一些依賴庫,其中包括LitePal,還有一些是爲了方便展示數據的。

② 配置項目

在app下的build.gradle中添加配置

	compileOptions {//指定使用的JDK1.8
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

    dataBinding {
        enabled = true
    }
	//數據解析
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    //Android SQLite操作框架
    implementation 'org.litepal.guolindev:core:3.1.1'

在這裏插入圖片描述
然後創建assets文件夾,文件夾下面新建一個litepal.xml文件

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--數據庫名稱-->
    <dbname value="Demo" />
    <!--數據庫版本-->
    <version value="1" />

    <!--映射模型-->
    <list>

    </list>
</litepal>

在這裏插入圖片描述
創建DemoApplication
在這裏插入圖片描述
然後在AndroidManifest.xml中指定
在這裏插入圖片描述
現在可以創建數據模型了。

③ 數據配置

在這裏插入圖片描述
這裏建了一個model然後裏面放數據實體,繼承LitePalSupport是爲了能夠使用增刪改查,代碼如下:

package com.llw.litepalusedemo.model;

import org.litepal.crud.LitePalSupport;
//區/縣
public class Area extends LitePalSupport {
    private int id;//這個id是可以不用的,因爲會默認創建一個自增的id
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

然後在litepal.xml中配置
在這裏插入圖片描述

④ 一頓操作

首先改動activity_main.xml佈局,在最外側增加標籤,改動後代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <TextView
            android:id="@+id/tv_result"
            android:gravity="center"
            android:text="結果"
            android:textColor="#000"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <LinearLayout
            android:gravity="center"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            <Button
                android:id="@+id/btn_add"
                android:text="增加數據"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <Button
                android:id="@+id/btn_update"
                android:text="修改數據"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

            <Button
                android:id="@+id/btn_query"
                android:text="查詢數據"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <Button
                android:id="@+id/btn_delete"
                android:text="刪除數據"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </LinearLayout>

    </LinearLayout>

</layout>

然後進入MainActivity,
代碼如下:

package com.llw.litepalusedemo;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import android.os.Bundle;
import android.widget.Toast;

import com.google.gson.Gson;
import com.llw.litepalusedemo.databinding.ActivityMainBinding;
import com.llw.litepalusedemo.model.Area;

import org.litepal.LitePal;

import java.util.List;

public class MainActivity extends AppCompatActivity {
    ActivityMainBinding mb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //綁定視圖
        mb = DataBindingUtil.setContentView(this,R.layout.activity_main);

        mb.btnAdd.setOnClickListener(v -> {//添加數據
            Area area = new Area();
            area.setName("福田");
            area.save();//保存

            if(area.save()){
                showMsg("添加數據成功");
            }else {
                showMsg("添加數據失敗");
            }
        });

        mb.btnUpdate.setOnClickListener(v -> {//修改數據


            Area area = new Area();
            area.setName("寶安");
            area.update(1);//修改指定ID的數據

            //area.setName("南山");
            //area.updateAll("name = ?","福田");//修改所有名字爲福田的爲南山

            showMsg("修改數據成功");

        });

        mb.btnQuery.setOnClickListener(v -> {//查詢數據
            //查詢指定ID的數據
            //Area area = LitePal.find(Area.class,1);

            //查詢所有數據
            List<Area> area = LitePal.findAll(Area.class);
            mb.tvResult.setText(new Gson().toJson(area));

        });

        mb.btnDelete.setOnClickListener(v -> {
            LitePal.delete(Area.class, 1);//刪除指定id

            //LitePal.deleteAll(Area.class, "name = ?" , "福田");//刪除所有name爲福田的
            showMsg("刪除數據成功");
        });

    }

    private void showMsg(String msg){
        Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
    }
}

效果圖
在這裏插入圖片描述
OK,寫完收工。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章