??郭神的博客中關(guān)于LitePal的使用已經(jīng)寫得很完美了,初次使用的話一定要把這九篇秘籍認(rèn)真讀幾遍陨倡。---> Android數(shù)據(jù)庫(kù)高手秘籍
??接下來說一些在使用過程中容易忽略的問題教馆。
??1.當(dāng)升級(jí)數(shù)據(jù)庫(kù)的時(shí)候宛逗,如果本地存儲(chǔ)發(fā)生變化帖池。例如把表刪除了寞钥,要在list集合里面把對(duì)應(yīng)實(shí)體類也刪掉慌申,否則升級(jí)的時(shí)候數(shù)據(jù)遷移時(shí)會(huì)報(bào)錯(cuò)。
<litepal>
<dbname value="xdb" />
<version value="8" /><!--3.0 :7-->
<storage value="internal" /><!--上線時(shí)注意環(huán)境是否修改-->
<!--當(dāng)升級(jí)數(shù)據(jù)庫(kù)的時(shí)候理郑,如果本地存儲(chǔ)發(fā)生變化蹄溉。例如把表刪除了,要在list里面也刪掉您炉。否則升級(jí)的時(shí)候數(shù)據(jù)遷移時(shí)會(huì)報(bào)錯(cuò)-->
<list>
<!--標(biāo)簽緩存實(shí)體類-->
<mapping class="com.shoneme.xmc.xxx.TagListBean"/>
</list>
</litepal>
??2.id字段可以不寫柒爵,LitePal會(huì)自己生成,LitePal不支持自定義主鍵赚爵。so棉胀,App數(shù)據(jù)中的id無法保存法瑟。也就是這樣,如果后臺(tái)返回?cái)?shù)據(jù)中有id字段并且業(yè)務(wù)邏輯中需要用到id唁奢,要添加一個(gè)字段代替id霎挟,比如下面的tag_id就是代替id作為唯一標(biāo)識(shí)。另外驮瞧,使用LitePal只有聲明private的字段才會(huì)被映射到數(shù)據(jù)表中氓扛,如果不想映射修改修飾符即可。
public class TagListBean extends DataSupport {
private int id;
private String tag_id;
private String name;
private String tag_pic;
private String type;
// getter论笔、setter
}
??3.如下采郎,類B中要添加類A的引用,類A中List<B> b必須要先做初始化操作(這是個(gè)bug)狂魔,并且在setB(List<B> b)
方法中做判斷蒜埋,如果存在數(shù)據(jù)即先清除數(shù)據(jù)在添加數(shù)據(jù)。關(guān)聯(lián)表在保存的時(shí)候注意最楷,類A先保存整份,然后給類B賦值。
public class A extends DataSupport {
private List<B> b = new ArrayList<>();
// getter籽孙、setter
public void setB(List<B> b) {
if (this.b.size() > 0){
this.b.clear();
}
this.b.addAll(b);
}
}
public class B extends DataSupport {
private A a;
// getter烈评、setter
??4.實(shí)體類BaseBean中的引用類如果是內(nèi)部類,會(huì)報(bào)錯(cuò)犯建,需要單獨(dú)創(chuàng)建一個(gè)java文件讲冠。
import com.shoneme.xmc.xxx.A;
import com.shoneme.xmc.xxx.B;
import com.shoneme.xmc.xxx.C;
import com.shoneme.xmc.xxx.D;
import java.util.List;
public class BaseBean {
private String result;
private InfoBean info;
// getter、setter
public static class InfoBean {
private List<A> a;
private List<B> b;
private List<C> c;
private List<D> d;
// getter适瓦、setter
}
??LitePal的使用非常方便竿开,尤其是集合數(shù)據(jù)保存和多數(shù)據(jù)庫(kù)功能。并且LitePal很“輕”玻熙,jar包只有100k不到否彩,而且近乎零配置。源碼十分易讀嗦随,佩服郭神列荔。在效率沒有多大差距的時(shí)候,簡(jiǎn)單快速可靠更加重要枚尼。