成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Android LitePal的使用詳解

瀏覽:3日期:2022-09-21 13:51:56
前言

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

簡述映射

LitePal是采用映射的方式來把數據存儲在數據庫中的,和GSON的道理是一樣的。例如我們現在有一個類,這個類必須是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; }}

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

配置LitePal

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

添加依賴庫:在app/build.gradle中添加如下內容:

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

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

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

<application android:name='org.litepal.LitePalApplication' ...<application

添加這句的意思是讓啟動app的時候會自動實例化LitePalApplication這個類供給LitePal這個框架使用。如果有自己寫了一個android:name的,那么只需要添加這一句LitePal.initialize(context);就可以了。其中的context參數為全局app的context。例如:```javapublic class myApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); LitePal.initialize(context); }} 在main目錄下創建一個Directory:assets。然后再assets目錄下再創建一個litepal.xml,如下圖:

Android LitePal的使用詳解

編輯litepal.xml中的內容:

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

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

CRUD操作

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

增加表和數據

例如我們現在要在數據庫中創建一個學生的表,首先要創建一個學生的類,再讓他繼承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 /></list>

這里的class要是你的類的真實目錄,視具體情況而定。添加其他的表也是同樣的道理。調用student對象的save()方法:```javaStudent student = new Student();student.setAge(12);student.setName('hha');student.save();

這里的save方法就是繼承前面的LitePalSuppport類的,調用這個方法后就會自動添加到庫中對應的表中的一行。添加其他行數據也是同樣的道理

更改表結構

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

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

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

<?xml version='1.0' encoding='utf-8'?><litepal> <dbname value='bookStore'/> <version value='2'/> <list> <mapping /> </list>

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

查詢數據

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

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

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

select()對應查哪幾列的內容 where()查詢的約束條件 order()排序方式 limit()指定查詢的數量 offset()指定結果的偏移量。這個可能比較難理解,舉個例子:假設你查的id是1,但是你設置了偏移量是1,那么返回的就是第二行的數據。

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

List<Song> songs = LitePal.where('name like ? and duration < ?', 'song%', '200') .order('duration') .select('name') .limit(3) .offset(3) .find(Song.class);

這樣就可以查詢到對應的數據了。# 異步操作有時候如果我們的數據庫中的內容很多,涉及到重量級的數據庫操作往往是比較費時的,那么這個時候肯定時不能放在主線程去進行操作的,這樣會造成系統卡死。那么我們就需要去把這個操作放在子線程中。LitePal早就為我們考慮到這個問題了,所以也增加了異步操作,輕松實現,來看看怎么用吧。先看個例子:```javaLitePal.findAllAsync(Song.class).listen(new FindMultiCallback<Song>() { @Override public void onFinish(List<Song> allSongs) { }});

這是在官網中的例子,要注意的兩個點

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

創建多個數據庫

如果你一個數據庫不夠用,想要創建多個數據庫,當然也是可以的,看代碼:

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

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

監聽數據庫創建或者升級

當數據庫創建或者升級的時候都會調用下面的兩個方法:

LitePal.registerDatabaseListener(new DatabaseListener() { @Override public void onCreate() { // fill some initial data } @Override public void onUpgrade(int oldVersion, int newVersion) { // upgrade data in db }});

可以在里面寫要執行的邏輯。

總結

LitePal這個庫確實是非常的強大,把很復雜的數據庫操作都簡化成了一個個的方法。但是更新很快,需要時刻看著他更新的內容,有可能會換API,所以建議大家多去官網學習。

以上就是Android LitePal的使用詳解的詳細內容,更多關于Android LitePal的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲欧美日韩成人高清在线一区| 女同一区二区| 国产精品每日更新| 精品粉嫩aⅴ一区二区三区四区| 99精品国产福利在线观看免费| 成人av手机在线观看| 日本在线不卡视频| 亚洲乱码精品一二三四区日韩在线| 日韩欧美国产综合一区| 欧洲生活片亚洲生活在线观看| 亚洲精品裸体| 极品少妇一区二区三区| 99久久99久久综合| 成人在线综合网| 国产成人午夜视频| 久久99国产精品免费| 亚洲二区在线视频| 一区二区三区国产精品| 中文字幕亚洲区| 国产精品久久久久aaaa樱花 | 亚洲视频欧美在线| 麻豆91在线播放| 亚洲第一狼人社区| 一区二区三区久久| 亚洲成人www| 亚洲一二三专区| 亚洲第四色夜色| 香蕉成人啪国产精品视频综合网| 亚洲女厕所小便bbb| 亚洲欧美色综合| 亚洲精品菠萝久久久久久久| 亚洲乱码国产乱码精品精98午夜 | 成人av第一页| 99免费精品视频| 午夜精品视频| 欧美日韩一区综合| 亚洲高清在线播放| 国产欧美一级| 色偷偷一区二区三区| 欧美日韩另类一区| 日韩欧美在线影院| 国产免费成人在线视频| 亚洲欧美日韩人成在线播放| 一区二区在线观看视频在线观看| 亚洲三级在线播放| 亚洲成人www| 国产资源精品在线观看| av一区二区三区| 国产精品二区在线观看| 亚洲欧美清纯在线制服| 一本久久综合亚洲鲁鲁五月天 | 国产午夜亚洲精品午夜鲁丝片 | 538在线一区二区精品国产| 精品国产三级电影在线观看| 欧美国产视频在线| 一区二区三区在线视频播放| 午夜精品免费在线| 午夜激情久久久| 国产精品自拍一区| 国产综合激情| 色嗨嗨av一区二区三区| 欧美一级欧美一级在线播放| 国产精品毛片高清在线完整版| 亚洲乱码国产乱码精品精小说| 日本在线观看不卡视频| 97se亚洲国产综合自在线| 国产精品久久一区二区三区| 欧美日韩亚洲综合一区 | 激情五月婷婷综合网| 97精品国产97久久久久久久久久久久| 亚洲激情一区二区| 欧美日韩一区国产| 中文字幕乱码日本亚洲一区二区| 亚洲国产一二三| 成人一区二区三区视频在线观看| 国产精品二区二区三区| 欧美色男人天堂| 日韩一区中文字幕| 精品在线播放免费| 亚洲美女视频在线免费观看| 欧美日产在线观看| 亚洲丝袜自拍清纯另类| 国产乱码精品一品二品| 中文精品视频| 欧美精品一区二区三区在线| 天天操天天综合网| 欧美激情视频一区二区三区在线播放| 久热国产精品| 日韩毛片高清在线播放| 国产精品91xxx| 免费在线国产精品| 国产精品久久毛片| 国产91精品欧美| 久久久久网站| 一区二区中文视频| 成人免费黄色大片| 欧美性一区二区| 亚洲综合视频网| 欧美在线高清| 日韩一区二区高清| 亚洲国产精品一区二区久久恐怖片| jizzjizzjizz欧美| 欧美日韩午夜精品| 亚洲视频免费在线| 欧美va天堂| 欧美三级日韩三级| 国产精品久久久久久久久动漫| 精品一区二区三区久久| 老牛影视一区二区三区| 亚洲一区二区三区中文字幕在线| 粉嫩高潮美女一区二区三区| 欧美性一级生活| 日本不卡高清视频| 欧美亚洲免费| 亚洲综合av网| 国产日韩欧美高清免费| 中文子幕无线码一区tr| gogo大胆日本视频一区| 日韩你懂的在线播放| 国产成人精品综合在线观看 | 国产精品区一区二区三区| a美女胸又www黄视频久久| 91麻豆精品国产| 久久精品国产网站| 欧美三片在线视频观看| 久久国产精品色| 欧美日韩色综合| 精品综合免费视频观看| 欧美性感一区二区三区| 精品一区二区三区av| 欧美午夜一区二区三区| 九色porny丨国产精品| 9191精品国产综合久久久久久| 亚洲天堂久久久久久久| 亚洲精选91| 亚洲网友自拍偷拍| 久久综合九色综合欧美狠狠| 五月婷婷欧美视频| 欧美日韩精品一区二区| 国产精品一线二线三线精华| 欧美一级免费观看| 成人一级黄色片| 国产色一区二区| 亚洲激情一区二区| 日韩国产成人精品| 在线播放中文一区| 成人av免费在线播放| 一区免费观看视频| 欧洲一区二区av| 成人一区在线看| 亚洲欧美激情在线| 久久欧美肥婆一二区| 国产精品正在播放| 亚洲国产精品黑人久久久| 在线亚洲一区| 蜜臀av性久久久久av蜜臀妖精 | 亚洲欧美区自拍先锋| 色欧美片视频在线观看| 国产成人av电影| 综合亚洲深深色噜噜狠狠网站| 裸体素人女欧美日韩| 国产精品一级片在线观看| 中文一区二区完整视频在线观看| 亚洲伊人观看| 国产成人av电影免费在线观看| 国产精品另类一区| 一本一道综合狠狠老| 91蜜桃在线免费视频| 一区二区三区视频在线观看| 欧美日韩在线观看一区二区| 欧美日韩亚洲一区三区| 日日摸夜夜添夜夜添精品视频| 91精品国产入口| 99精品欧美一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 国产日产精品1区| 91福利在线导航| 欧美黄色一区| 麻豆成人在线观看| 国产精品丝袜黑色高跟| 欧美在线一二三| 国产综合网站| 国产一区二区精品在线观看| 亚洲欧美日韩一区二区 | 久久精品二区| 成人avav影音| 午夜激情一区二区三区| 欧美一二三区在线观看| 99精品欧美| 成人性色生活片| 午夜精品久久久久影视| 日韩精品一区二区在线| 国产日韩欧美一区二区三区在线观看 | 在线观看91av| 久久精品人人| 日韩精品电影一区亚洲| 国产精品国产成人国产三级 | 日韩电影在线免费看| 视频一区在线视频| 天天影视色香欲综合网老头|