欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

LitePal如何在Android中使用-創(chuàng)新互聯(lián)

這篇文章給大家介紹 LitePal如何在Android中使用,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供長春企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為長春眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

前言

數(shù)據(jù)庫操作一直都是比較繁瑣而且單一的東西,平時開發(fā)中數(shù)據(jù)庫也很常見。有學過mysql的讀者可能會覺得sql語句確實讓人很難受。同樣android中,雖然有內(nèi)置數(shù)據(jù)庫SQLite,但是操作起來還是非常的不方便。跟網(wǎng)絡(luò)請求類似,當我們用原生的HttpURLConnection請求數(shù)據(jù)再用json解析,過程很繁瑣,所以我們一般是封裝成一個工具類,但是retrofit出現(xiàn)了,他幫我們解決了網(wǎng)絡(luò)請求和解析數(shù)據(jù)的封裝,同時還支持RxJava的異步,十分強大。不了解retrofit的讀者也建議你們?nèi)W習一下retrofit確實非常好用。LitePal也是同樣的道理,把創(chuàng)建數(shù)據(jù)庫和增刪查改等等操作都封裝起來,所以我們用起來會非常的方便。同時還支持異步操作,不需要我們自己去開啟子線程,代碼非常的整潔,簡單。那接下來就來看看這個神奇的框架LitePal。

簡述映射

LitePal是采用映射的方式來把數(shù)據(jù)存儲在數(shù)據(jù)庫中的,和GSON的道理是一樣的。例如我們現(xiàn)在有一個類,這個類必須是javaBean類:

public class Student extends LitePalSupport {
  private String name;
  private int age;
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
}

那么他在數(shù)據(jù)庫中就會有一個表,這個表有三列:id,name和age,id是自動生成的,這樣就可以理解映射了吧。所以我們使用LitePal的時候不用去指定每一列是什么,只需要給他一個Bean類,自動就會生成了。

配置LitePal

LitePal使用之前需要先配置一下,一共分為兩步:

  • 添加依賴庫:在app/build.gradle中添加如下內(nèi)容:

dependencies {
 implementation 'org.litepal.android:java:3.0.0'
}

其中3.0.0是版本號,寫這個文章的時候是3.0,他更新也是很快的,讀者可以自行到文末進入官網(wǎng)查詢新的版本號。添加完之后sync一下就行了。

  • 修改AndroidManifest中的代碼:添加一句android:name=”org.litepal.LitePalApplication”:

<application
   android:name="org.litepal.LitePalApplication"
   ...
<application
添加這句的意思是讓啟動app的時候會自動實例化LitePalApplication這個類供給LitePal這個框架使用。如果有自己寫了一個android:name的,那么只需要添加這一句LitePal.initialize(context);就可以了。其中的context參數(shù)為全局app的context。例如:
```java
public class myApplication extends Application {
  private static Context context;

  @Override
  public void onCreate() {
    super.onCreate();
    context = getApplicationContext();
    LitePal.initialize(context);
  }

}
  • 在main目錄下創(chuàng)建一個Directory:assets。然后再assets目錄下再創(chuàng)建一個litepal.xml,如下圖:

LitePal如何在Android中使用

  • 編輯litepal.xml中的內(nèi)容:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
 <dbname value="bookStore"/>
 <version value="1"/>

 <list>   
 </list>

``` dbname就是數(shù)據(jù)庫的名字,version是數(shù)據(jù)庫的版本,list中是數(shù)據(jù)庫中的表,可以在這里添加,怎么添加后面會講到。

CRUD操作

常規(guī)增刪查改操作,但是在這個框架下都顯得特別的簡單。

增加表和數(shù)據(jù)

例如我們現(xiàn)在要在數(shù)據(jù)庫中創(chuàng)建一個學生的表,首先要創(chuàng)建一個學生的類,再讓他繼承LitePalSupport類,至于為什么下面會講到:

public class Student extends LitePalSupport {
 private String name;
 private int age;
 public String getName() {
   return name;
 }

 public void setName(String name) {
   this.name = name;
 }
 public int getAge() {
   return age;
 }
 public void setAge(int age) {
   this.age = age;
 }
}

然后在剛才的litepal.xml中添加表:

<list>
   <mapping class="com.example.myapplication.Student"/>
</list>
這里的class要是你的類的真實目錄,視具體情況而定。
添加其他的表也是同樣的道理。
調(diào)用student對象的save()方法:
```java
Student student = new Student();
        student.setAge(12);
        student.setName("hha");
        student.save();

這里的save方法就是繼承前面的LitePalSuppport類的,調(diào)用這個方法后就會自動添加到庫中對應(yīng)的表中的一行。
添加其他行數(shù)據(jù)也是同樣的道理

更改表結(jié)構(gòu)

更新表的列。例如前面的學生類是name和age,但是如果你想要增加一個studentId,可以很簡單地實現(xiàn)。具體操作如下:

首先更改你的bean類,想怎么改就怎么改

在litepal.xml中更改版本號增加1.例如:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
 <dbname value="bookStore"/>
 <version value="2"/>
 <list>
     <mapping class="com.example.myapplication.Student"/>
 </list>

``` 把他改成2就行了。 ## 刪除數(shù)據(jù) 刪除數(shù)據(jù)也很簡單,有兩種刪除方法,一種是指定行刪除,一種給個約束條件刪除。 1. 刪除單行: LitePal.delete(Student.class , id); 2. 約束條件: LitePal.deleteAll(Student.class, "age > ?" , "12"); 指定約束條件刪除,?是占位符會把后面的12放進去。 如果只傳入一個Student.class,那么就會把整個表的數(shù)據(jù)都刪除了

查詢數(shù)據(jù)

查詢數(shù)據(jù)的接口都會返回一個List,每一行對應(yīng)一個對象。所以是LitePal把數(shù)據(jù)解析都給我們做好了,我們直接拿對象使用就ok了。這里有幾種方法接口都看一下:

LitePal.findAll(Student.class,id);查詢對應(yīng)表的對應(yīng)行,如果沒有傳入id參數(shù),就返回這個表的所有內(nèi)容。同樣findFirst是返回第一行,findLast是返回最后一行。

查詢的內(nèi)容還可以進行篩選,這里就用到幾個方法:

  • select()對應(yīng)查哪幾列的內(nèi)容

  • where()查詢的約束條件

  • order()排序方式

  • limit()指定查詢的數(shù)量

  • offset()指定結(jié)果的偏移量。這個可能比較難理解,舉個例子:假設(shè)你查的id是1,但是你設(shè)置了偏移量是1,那么返回的就是第二行的數(shù)據(jù)。

最后舉一個綜合例子演示一下:

List<Song> songs = LitePal.where("name like ? and duration < ?", "song%", "200")
                  .order("duration")
                  .select("name")
                  .limit(3)
                  .offset(3)
                  .find(Song.class);
這樣就可以查詢到對應(yīng)的數(shù)據(jù)了。
# 異步操作
有時候如果我們的數(shù)據(jù)庫中的內(nèi)容很多,涉及到重量級的數(shù)據(jù)庫操作往往是比較費時的,那么這個時候肯定時不能放在主線程去進行操作的,這樣會造成系統(tǒng)卡死。那么我們就需要去把這個操作放在子線程中。LitePal早就為我們考慮到這個問題了,所以也增加了異步操作,輕松實現(xiàn),來看看怎么用吧。
先看個例子:
```java
LitePal.findAllAsync(Song.class).listen(new FindMultiCallback<Song>() {
 @Override
 public void onFinish(List<Song> allSongs) {

 }
});

這是在官網(wǎng)中的例子,要注意的兩個點

用findAllAsync代替findAll方法
添加listen方法,并新建匿名類FindMultiCallback<>()作為參數(shù),重寫里面的onFinish方法即可
這樣獲取完數(shù)據(jù)后就會執(zhí)行onFinish方法了
輕松實現(xiàn)異步操作。同樣這個可以結(jié)合上面的數(shù)據(jù)篩選。

創(chuàng)建多個數(shù)據(jù)庫

如果你一個數(shù)據(jù)庫不夠用,想要創(chuàng)建多個數(shù)據(jù)庫,當然也是可以的,看代碼:

LitePalDB litePalDB = new LitePalDB("demo2", 1);
litePalDB.addClassName(Singer.class.getName());
LitePal.use(litePalDB);

這里就創(chuàng)建了一個庫叫做demo2,并增加了一個表:Singer。最后執(zhí)行LitePal.use方法來啟用這個庫。這樣的話就默認使用這個庫了。對象的save方法都會執(zhí)行到這個庫中
如果想切回到litepal.xml中的那個庫,可以用下面的方法:
LitePal.useDefault();
如果想刪除一個庫(刪庫跑路可能會被亂棒打死)
LitePal.deleteDatabase(“demo2”);
是不是很簡單?

監(jiān)聽數(shù)據(jù)庫創(chuàng)建或者升級

當數(shù)據(jù)庫創(chuàng)建或者升級的時候都會調(diào)用下面的兩個方法:

LitePal.registerDatabaseListener(new DatabaseListener() {
  @Override
  public void onCreate() {
    // fill some initial data
  }

  @Override
  public void onUpgrade(int oldVersion, int newVersion) {
    // upgrade data in db
  }
});

可以在里面寫要執(zhí)行的邏輯。

關(guān)于 LitePal如何在Android中使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享題目:LitePal如何在Android中使用-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article0/ccjcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、域名注冊、Google全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
色哟哟亚洲精品一区二区| 久久久人妻91久久久久| 亚洲av少妇高潮流白浆在线| 精品爆白浆一区二区三区| 精品人妻av中文字幕乱| 91麻豆精品国产91久5久久| 欧美a级黄片免费在线观看| 久久精品国产一区二区三| 全部网站免费在线观看等| 日韩精品一区中文字幕在线| 日本色电影一区二区三区| 久久精品国产一区二区三| 亚洲综合香蕉在线视频| 和富婆啪啪一区二区免费看| 久久热最新免费观看视频| 九九蜜桃视频香蕉视频| 亚洲成人国产一区二区| 亚洲少妇精品视频在线| 日韩精品一区二区一牛| 亚洲成人自拍在线视频| av毛片高清在线观看| 欧美日韩精品免费在线观看| 日本精品视频免费网| 黄色av手机在线观看| 久热在线这里只有精品| 久久精品久久久精品| av永久天堂一区二区三区| 欧美日韩国产看片一区二区| 中文字幕乱码一区二区欧美| 欧美久久久久综合一区| 亚洲av日韩欧美精品| 亚洲综合精品久久久一区| 人妻少妇久久中文字幕韩 | 国产高清av免费在线播放| 欧美日韩中文字幕精品视频| 欧美日本道一区二区三区| 麻豆精品国产粉嫩av| 久久91超碰青草在哪里看| 男人av天堂手机在线| 日本av高清视频在线观看| 九九视频666免费|