關(guān)于LitePal(github地址)
三步曲:
1. 添加依賴:api 'org.litepal.android:java:3.0.0'
2. 在assets中生成litepal.xml文件曼验;具體內(nèi)容查看litepal.xml
3. application繼承LitePalApplication 或者添加:LitePal.initialize(this);
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--設(shè)定數(shù)據(jù)庫的名字-->
<dbname value="curry"></dbname>
<!--設(shè)定數(shù)據(jù)庫的版本號[需要純數(shù)字]-->
<version value="2"></version>
<!--用于設(shè)定所有的映射模型-->
<list>
<mapping class="com.curry.basic.test.TestBean"></mapping>
<mapping class="com.curry.basic.test.AllBean"></mapping>
<mapping class="com.curry.basic.test.ChildBean"></mapping>
<mapping class="com.curry.basic.test.OnlyBean"></mapping>
</list>
</litepal>
-
數(shù)據(jù)庫相關(guān)(
表關(guān)聯(lián)
):- 一對一:數(shù)據(jù)表根據(jù)外鍵進行關(guān)聯(lián)(哪個表添加外鍵都可以)倔喂;兩個實體類相互持有對方的引用;
- 多對一:數(shù)據(jù)表根據(jù)外鍵進行關(guān)聯(lián)(多方添加外鍵);通過集合類;
- 多對多:添加中間表存放兩表的id;通過集合的多持有;
- 對象關(guān)系映射的數(shù)據(jù)類型: int鹏漆、short、long创泄、float艺玲、double、boolean鞠抑、String和Date
-
建表:
- 新建實體類饭聚,即數(shù)據(jù)庫表;
- 根據(jù)對象關(guān)系映射搁拙,以上的數(shù)據(jù)類型都會映射到數(shù)據(jù)庫表中;
- 然后在litepal.xml中配置模型類的類名
- 執(zhí)行SQLiteDatabase db = Connector.getDatabase();操作數(shù)據(jù)后秒梳,即可生成;
- 升級表: 僅需要添加需要新增的模型類箕速,然后在xml中配置即可【版本號要加1】
- 增酪碘、刪、改弧满、差: 都可以通過LitePal進行操作婆跑;或者對實體類進行操作,注意刪除功能要對已經(jīng)持久化過的實體類進行刪除才起作用庭呜;可以通過isSaved判斷實體類是否持久化滑进。
-
聚合函數(shù):
- litepal.count(testbean.class);//統(tǒng)計行數(shù)
- litepal.sum(testbean.class, "test", int.class);//求和
- litepal.average(testbean.class, "test");//求平均值
- litepal.max(testbean.class, "test", int.class);//求最大
- litepal.min(testbean.class, "test", int.class);//求最小
其他:
SQLite不支持刪除列的命令嗎?那LitePal又是怎樣做到的呢募谎?
其實LitePal并沒有刪除任何一列扶关,它只是先將comment表重命名成一個臨時表,
然后根據(jù)最新的Comment類的結(jié)構(gòu)生成一個新的comment表数冬,
再把臨時表中除了publishdate之外的數(shù)據(jù)復(fù)制到新的表中节槐,最后把臨時表刪掉。
因此拐纱,看上去的效果好像是做到了刪除列的功能铜异。
PS:
在module中也可正常使用,xml放在module中的assets文件中秸架,主工程是可以正常調(diào)用的揍庄。
(親試有效哦)