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