LitePal的简单使用

上截图:

首先引入litepal依赖库和butterknife依赖库,完整build.gradle如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.litepaldemo"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    implementation 'org.litepal.guolindev:core:3.2.2'
    implementation 'com.jakewharton:butterknife:10.2.3'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}

main文件下新建assets文件夹,assets下新加litepal.xml文件(升级数据库修改version中的值就行):

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--
    	Define the database name of your application.
    	By default each database name should be end with .db.
    	If you didn't name your database end with .db,
    	LitePal would plus the suffix automatically for you.
    	For example:
    	<dbname value="demo" />
    -->
    <dbname value="demo" />

    <!--
    	Define the version of your database. Each time you want
    	to upgrade your database, the version tag would helps.
    	Modify the models you defined in the mapping tag, and just
    	make the version value plus one, the upgrade of database
    	will be processed automatically without concern.
			For example:
    	<version value="1" />
    -->
    <version value="1" />

    <!--
    	Define your models in the list with mapping tag, LitePal will
    	create tables for each mapping class. The supported fields
    	defined in models will be mapped into columns.
    	For example:
    	<list>
    		<mapping class="com.test.model.Reader" />
    		<mapping class="com.test.model.Magazine" />
    	</list>
    -->
    <list>
        
    </list>

    <!--
        Define where the .db file should be. "internal" means the .db file
        will be stored in the database folder of internal storage which no
        one can access. "external" means the .db file will be stored in the
        path to the directory on the primary external storage device where
        the application can place persistent files it owns which everyone
        can access. "internal" will act as default.
        For example:
        <storage value="external" />
    -->
</litepal>

然后新建Song类继承LitePalSupport:

package com.example.litepaldemo;

import org.litepal.crud.LitePalSupport;

public class Song extends LitePalSupport {

    private long id;
    private String name;
    private String singer;

    public long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getSinger() {
        return singer;
    }

    public void setSinger(String singer) {
        this.singer = singer;
    }
}
MyApplication继承Application并初始化LitePal:
package com.example.litepaldemo;

import android.app.Application;

import org.litepal.LitePal;

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
}

配置文件中引入MyApplication:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.litepaldemo" >

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

使用:

创建数据库并生成自建的Song表:

 LitePal.getDatabase();

新增数据:

 Song song = new Song();
 song.setName("自由飞翔");
 song.setSinger("凤凰传奇");
 song.save();

删除单条数据(根据id删除):

 LitePal.delete(Song.class, Long.parseLong(etId.getText().toString()));

修改单条数据(根据id修改):

private void update(long id) {
        Song songUpdate = new Song();
        songUpdate.setName(etUpdateName.getText().toString());
        songUpdate.setSinger(etUpdateSinger.getText().toString());
        songUpdate.update(id);
}

查询所有数据并显示:

private void findAll() {
        List<Song> allSongs = LitePal.findAll(Song.class);

        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < allSongs.size(); i++) {
            stringBuffer.append(allSongs.get(i).getId() + ":" + allSongs.get(i).getName() + "--" + allSongs.get(i).getSinger() + "\n");
        }
        tvContext.setText(stringBuffer);
}

根据id查询单条数据:

 Song song = LitePal.find(Song.class, Long.parseLong(s.toString()));

删除数据库下的所有表内容:

LitePal.deleteDatabase("demo");

主要代码:

package com.example.litepaldemo;

import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import org.litepal.LitePal;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.et_name)
    EditText etName;
    @BindView(R.id.et_singer)
    EditText etSinger;
    @BindView(R.id.btn_add)
    Button btnAdd;
    @BindView(R.id.tv_context)
    TextView tvContext;
    @BindView(R.id.et_id)
    EditText etId;
    @BindView(R.id.btn_del)
    Button btnDel;
    @BindView(R.id.et_update_id)
    EditText etUpdateId;
    @BindView(R.id.et_update_name)
    EditText etUpdateName;
    @BindView(R.id.et_update_singer)
    EditText etUpdateSinger;
    @BindView(R.id.btn_update)
    Button btnUpdate;
    @BindView(R.id.btn_getDatabase)
    Button btnGetDatabase;
    @BindView(R.id.btn_delDatabase)
    Button btnDelDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        findAll();

        etUpdateId.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (!TextUtils.isEmpty(s.toString())) {
                    //查单条
                    Song song = LitePal.find(Song.class, Long.parseLong(s.toString()));
                    if (song != null) {
                        etUpdateName.setText(song.getName());
                        etUpdateSinger.setText(song.getSinger());
                    }
                }
            }
        });
    }

    /**
     * 查所有
     */
    private void findAll() {
        List<Song> allSongs = LitePal.findAll(Song.class);

        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < allSongs.size(); i++) {
            stringBuffer.append(allSongs.get(i).getId() + ":" + allSongs.get(i).getName() + "--" + allSongs.get(i).getSinger() + "\n");
        }
        tvContext.setText(stringBuffer);
    }

    /**
     * 改单条
     *
     * @param id
     */
    private void update(long id) {
        Song songUpdate = new Song();
        songUpdate.setName(etUpdateName.getText().toString());
        songUpdate.setSinger(etUpdateSinger.getText().toString());
        songUpdate.update(id);
    }

    @OnClick({R.id.btn_add, R.id.btn_del, R.id.btn_update, R.id.btn_getDatabase, R.id.btn_delDatabase})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            //新增
            case R.id.btn_add:
                if (TextUtils.isEmpty(etName.getText().toString()) || TextUtils.isEmpty(etSinger.getText().toString())) {
                    Toast.makeText(this, "歌手或歌名不能为空", Toast.LENGTH_SHORT).show();
                } else {
                    Song song = new Song();
                    song.setName(etName.getText().toString());
                    song.setSinger(etSinger.getText().toString());
                    song.save();
                    findAll();
                }
                break;
            //删除
            case R.id.btn_del:
                if (TextUtils.isEmpty(etId.getText().toString())) {
                    Toast.makeText(this, "请输入要删除的id", Toast.LENGTH_SHORT).show();
                } else {
                    //删除单条
                    LitePal.delete(Song.class, Long.parseLong(etId.getText().toString()));
                    findAll();
                }
                break;
            //修改单条数据
            case R.id.btn_update:
                if (TextUtils.isEmpty(etUpdateId.getText().toString())) {
                    Toast.makeText(this, "id不能为空", Toast.LENGTH_SHORT).show();
                } else {
                    //修改单条
                    update(Long.parseLong(etUpdateId.getText().toString()));
                    findAll();
                }
                break;
            //创建数据库
            case R.id.btn_getDatabase:
                LitePal.getDatabase();
                Song song = new Song();
                song.setName("自由飞翔");
                song.setSinger("凤凰传奇");
                song.save();
                findAll();
                break;
            //删除数据库
            case R.id.btn_delDatabase:
                LitePal.deleteDatabase("demo");
                findAll();
                break;
        }
    }
}

Demo:https://github.com/cuiwenju2017/LitePalDemo

更多用法见郭神官方Demo:https://github.com/guolindev/LitePal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值