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