电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android LitePal的使用詳解

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

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

簡(jiǎn)述映射

LitePal是采用映射的方式來(lái)把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的,和GSON的道理是一樣的。例如我們現(xiàn)在有一個(gè)類,這個(gè)類必須是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ù)庫(kù)中就會(huì)有一個(gè)表,這個(gè)表有三列:id,name和age,id是自動(dòng)生成的,這樣就可以理解映射了吧。所以我們使用LitePal的時(shí)候不用去指定每一列是什么,只需要給他一個(gè)Bean類,自動(dòng)就會(huì)生成了。

配置LitePal

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

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

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

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

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

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

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

Android LitePal的使用詳解

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

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

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

CRUD操作

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

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

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

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要是你的類的真實(shí)目錄,視具體情況而定。添加其他的表也是同樣的道理。調(diào)用student對(duì)象的save()方法:```javaStudent student = new Student();student.setAge(12);student.setName('hha');student.save();

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

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

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

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

在litepal.xml中更改版本號(hào)增加1.例如:

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

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

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

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

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

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

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

最后舉一個(gè)綜合例子演示一下:

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

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

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

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

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

如果你一個(gè)數(shù)據(jù)庫(kù)不夠用,想要?jiǎng)?chuàng)建多個(gè)數(shù)據(jù)庫(kù),當(dāng)然也是可以的,看代碼:

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

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

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

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

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

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

總結(jié)

LitePal這個(gè)庫(kù)確實(shí)是非常的強(qiáng)大,把很復(fù)雜的數(shù)據(jù)庫(kù)操作都簡(jiǎn)化成了一個(gè)個(gè)的方法。但是更新很快,需要時(shí)刻看著他更新的內(nèi)容,有可能會(huì)換API,所以建議大家多去官網(wǎng)學(xué)習(xí)。

以上就是Android LitePal的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Android LitePal的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 佛山市德信昌电子有限公司 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 诗词大全-古诗名句 - 古诗词赏析 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 |