Android LitePal的简单使用

简介: Android LitePal的简单使用

前言


为了丰富这个对于Android SQLite的使用,特别写了这篇文章,也算是做一个笔记吧。

效果图

20200628160555191.gif


正文


LitePal是Android中比较轻便的开源数据库框架,是郭霖大神写的,本文只做最简单的使用。


① 创建项目


20200628145501544.png


然后是导入一些依赖库,其中包括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'

20200628151228201.png


然后创建assets文件夹,文件夹下面新建一个litepal.xml文件


<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--数据库名称-->
    <dbname value="Demo" />
    <!--数据库版本-->
    <version value="1" />
    <!--映射模型-->
    <list>
    </list>
</litepal>

20200628151552288.png


创建DemoApplication

20200628151921852.png


然后在AndroidManifest.xml中指定


20200628152017658.png


现在可以创建数据模型了。


③ 数据配置


202006281524019.png


这里建了一个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中配置


20200628152740986.png


④ 一顿操作


首先改动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();
    }
}


效果图


20200628160555191.gif


OK,写完收工。

相关文章
|
存储 API 数据库
Android的LitePal数据库ORM使用总结(避坑指南)
Android的LitePal数据库ORM使用总结(避坑指南)
|
Java Android开发
android litepal(还是手写db的好用)
  郭大神的 litepal  不敢恭维,占用  id 问题 ~~~    myApplication   package com.baoy.demo.demolitepal; import org.
1244 0
|
存储 SQL 数据库
实战LitePal(Android_Persistent Technology)
LitePal是GitHub上一款开源的Android数据库框架。LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。
1463 0
|
6天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
19天前
|
Android开发 开发者 Kotlin
探索安卓开发中的新特性
【9月更文挑战第14天】本文将引导你深入理解安卓开发领域的一些最新特性,并为你提供实用的代码示例。无论你是初学者还是经验丰富的开发者,这篇文章都会给你带来新的启示和灵感。让我们一起探索吧!
|
3天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
18 7
|
6天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台解决方案
【9月更文挑战第27天】在移动应用开发的广阔天地中,安卓和iOS两大操作系统如同双子星座般耀眼。开发者们在这两大平台上追逐着创新的梦想,却也面临着选择的难题。如何在保持高效的同时,实现跨平台的开发?本文将带你探索跨平台开发的魅力所在,揭示其背后的技术原理,并通过实际案例展示其应用场景。无论你是安卓的忠实拥趸,还是iOS的狂热粉丝,这篇文章都将为你打开一扇通往跨平台开发新世界的大门。
|
3天前
|
缓存 Java Linux
探索安卓开发:从新手到专家的旅程
【9月更文挑战第30天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索安卓开发的广阔世界。无论你是刚入门的新手,还是希望提升技能的开发者,本文都将为你提供宝贵的知识和指导。我们将深入探讨安卓开发的基础知识、关键概念、实用工具和最佳实践,帮助你在安卓开发领域取得更大的成功。让我们一起开启这段精彩的旅程吧!
下一篇
无影云桌面