|
Litepal使用的注意點(diǎn)(僅僅列出一些常見(jiàn)的):
1、當(dāng)調(diào)用DataSupport的save()方法一直返回錯(cuò)誤(false)的時(shí)候,很有可能是我們的javabean對(duì)象以及對(duì)應(yīng)的配置有誤,錯(cuò)誤有可能如下:
bean對(duì)象以及bean對(duì)象的父類(lèi),內(nèi)部類(lèi),一切bean對(duì)象文件里面出現(xiàn)過(guò)的類(lèi),一定要繼承DataSupport類(lèi),并且在litepal.xml文件中配置。不繼承,不配置,都會(huì)報(bào)錯(cuò)。
如果bean對(duì)象添加了成員變量id,那么id一定要是int 或者 long 類(lèi)型,其他類(lèi)型均會(huì)報(bào)錯(cuò)。
如果我們的對(duì)象只有一個(gè)成員id,例如我們的BaseBean經(jīng)常就是只有一個(gè)成員id,那么項(xiàng)目運(yùn)行起來(lái),在創(chuàng)建基本表的時(shí)候依然會(huì)報(bào)錯(cuò)。原因是:不管是否添加id,litepal都會(huì)自動(dòng)為我們添加id這個(gè)屬性,因此表明litepal的一個(gè)bean對(duì)象不能只有一個(gè)名字為id成員。如果是有一個(gè)id,那么litepal在底層生成SQL語(yǔ)句的時(shí)候,會(huì)生成“id integer primary keyautoincrement , ”這是一句不完整的SQL語(yǔ)句,因此會(huì)報(bào)錯(cuò)。
2、save()方法一直返回錯(cuò)誤(false)的時(shí)候,異常信息都是警告而不是錯(cuò)誤,因此需要切換LogCat的過(guò)濾。
3、對(duì)于findAll()方法,它返回的是List<Bean對(duì)象>,因此需要我們?nèi)?qiáng)制轉(zhuǎn)換為ArrayList<T>,不然在add等操作的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)槲覀兪褂玫亩际?/font>List的實(shí)現(xiàn)類(lèi)而不是List接口本身。強(qiáng)轉(zhuǎn)如果不指定泛型T的時(shí)候Android Studio會(huì)提示沒(méi)有類(lèi)型檢查的警告,但是我們可以忽略。
4、bean對(duì)象的所有成員變量的名字都不能和SQL的一且關(guān)鍵字沖突,原因也很簡(jiǎn)單,litepal在底層生成SQL語(yǔ)句的時(shí)候會(huì)把成員變量的名字拼成SQL語(yǔ)句。
5、成員如果是booleana;
其中a是我舉例子用的名字,生成get以及 set方法的時(shí)候,Android Studio會(huì)把get方法名定義為“public boolean isA(boolean a)”,我們自己不要手賤把它改為getA,否則litepal也會(huì)報(bào)找不到方法的錯(cuò)。
6、額,最后一點(diǎn)是數(shù)據(jù)庫(kù)的問(wèn)題,因?yàn)?/font>id屬性是默認(rèn)自增長(zhǎng)的,如果項(xiàng)目中自定義的ID不是自增長(zhǎng)的話,最好自己再定義一個(gè)ID。比如商城項(xiàng)目中的商品ID,如果用戶不是按照逐次增長(zhǎng)的形式添加商品的話,商品被save()的時(shí)候,一開(kāi)始是ID+1的,知道ID滿足與已存在的商品ID自增長(zhǎng)的規(guī)律的時(shí)候才能正確判斷商品已存在。
|
|