android之LitePal 3.0 的基本使用
一.LitePal簡介
LitePal是一款開源的Android數據庫框架,它采用了對象關系映射(ORM)的模式,并將我們平時開發最常用到的一些數據庫功能進行了封裝,使得不用編寫一行SQL語句就可以完成各種建表和增刪改查的操作,并且LitePal很“輕”,jar包大小不到100k,而且近乎零配置,這一點和Hibernate這類的框架有很大區別。
GitHub : http://github.com/LitePalFramework/LitePal
二.LitePal的使用
1.添加依賴
在app/build.gradle文件中添加compile依賴如下:
dependencies {compile 'org.litepal.android:java:3.0.0' }2.在assets目錄下創建litepal.xml配置文件
項目文件夾下New->Folder->Assets Folder創建相應的assets文件夾,然后在assets文件夾下創建一個名為litepal.xml的文件,編輯文件如下:
<?xml version="0.1" encoding="utf-8"?> <litepal><dbname value="lss0555_litepaldemo" /> // 數據庫名稱為litepaldemo,默認以 .db 結尾,如未以此結尾,則自動添加。<version value="1" /> // 數據庫版本為1,每次數據庫發生變動版本號必須+1<list> // 有幾張表就在list之間寫幾個mapping// list標簽中的實體類都應該繼承LitePalSupport這個類,這個千萬別忘記<mapping class="example.com.litepal.model.New"></mapping></list><storage value="lss0555/litepal/database" /> //storage 定義數據庫文件存儲的地方,可選 internal(內部) 和 external(外部), 默認為 internal </litepal>3.在Application中初始化
在自己的application中加入一行代碼即可:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate();// 初始化LitePal.initialize(this); } ... }經過上面3步的配置,LitePal就已經集成成功并可以正常使用了。
三.使用測試
1.實體類創建
/*** Created by lss0555 on 2019/3/11/011.* 從LitePal 2.0.0版本開始建議使用繼承LitePalSupport類,* DataSupport類已經被標為了廢棄,雖然暫時還可以正常工作,但是不建議再繼續使用了*/public class New extends LitePalSupport {private int id;//不為空@Column(nullable = false)private String title;@Columnprivate String detail;@Columnprivate String imgurl;注意:
- 不管實體類中有沒有id這個屬性,都會默認創建一個為整型的id字段,作為自增的主鍵
- 如果實體類中有一個字段名為id,那么類型只能為int或者long
- id字段的值始終為當前記錄的行號(下標從1開始),即使我們在實體類中定義了int或者long類型的id字段,在添加數據時人為的設置id的值為100,等其他值,查詢數據庫發現該id字段的值設置是無效的,她始終等于該條記錄所在的行id,即第幾條記錄。
- 所有的column注解總共有四個,defaultValue的默認值為空字符,所以這個注解只能用以是String類型的字段,即字符型才有默認值
- litepal支持的實體類字段映射類型為 int,long,double,float,byte[],boolean,String,Date;不支持String[]數組型
2.數據庫增刪改查操作
(1) .存儲操作
New aNew = new New();aNew.setTitle("新聞1");aNew.setDetail("詳情1");aNew.setImgurl("http://www.baidu.com");aNew.setUserid("lss0888");aNew.save();save()方法是有返回值的,返回true代表添加成功,返回flase代表添加失敗。
save()是添加一條數據,批量添加是 LitePal.saveAll(news);
(2). 刪除記錄
//刪除數據庫中new表的所有記錄 LitePal.deleteAll(New.class); //刪除數據庫new表中id為1的記錄 LitePal.delete(New.class,1); //刪除數據庫new表中idn大于3的記錄 LitePal.delete(Movie.class, "id > ?" ,3);(3). 修改記錄
1.根據條件修改
New aNew = new New(); aNew.setTitle("新聞11新聞11新聞11"); aNew.setDetail("詳情1新聞11新聞11新聞11"); aNew.setImgurl("http://www.baidu.com新聞11"); aNew.setUserid("lss0888新聞11"); aNew.update(11);2.更新所有title為新聞1的記錄,將title字段設為標題2
New aNew = new New(); aNew.setTitle("標題2"); aNew.updateAll("title = ?", "新聞1");3.多條件更新
New aNew = new New(); aNew.setTitle("新聞888"); aNew.setDetail("詳情888"); aNew.updateAll("title=? and detail=?", "標題2","詳情1");(4). 查詢記錄
1.查詢所有
List<New> newList = LitePal.findAll(New.class);2.查詢id為1
New aNew = LitePal.find(New.class, 1);3.查找title新聞1的記錄,并且以id排序
List<New> aNew = LitePal.where("title = ?", "新聞1").order("id").find(New.class);4.查找所有id齡小于2
List<New> aNew = LitePal.where("id < ?", "3").find(New.class);5.多條件查詢
int age = 12;//條件一 String sex = "man";條件二 DataSupport.where("age = ? and sex = ?", "" + age, sex).find(Comment.class);//查詢表Comment(5). 原始sql語句操作
Cursor select_ = LitePal.findBySQL(sql);findBySQL()方法接收任意個字符串參數,其中第一個參數就是SQL語句,后面的參數都是用于替換SQL語句中的占位符的,用法非常簡單。另外,findBySQL()方法返回的是一個Cursor對象,這和原生SQL語句的用法返回的結果也是相同的。
(6). 刪除數據庫
LitePal.deleteDatabase("")(7). 創建數據庫
LitePal.getDatabase()(8). 混淆配置
-keep class org.litepal.** {*; }-keep class * extends org.litepal.crud.LitePalSupport{*; }(9). 使用LitePal來完成升級表的操作:
包括新增一張表,新增表中的一個字段,刪除表中的一個字段,刪除表等,每一次的升級操作litepal.xml文件中數據庫的版本號都必須加1.
具體升級操作參考博客:
https://blog.csdn.net/guolin_blog/article/details/39151617
總結
以上是生活随笔為你收集整理的android之LitePal 3.0 的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVisualVM 简介
- 下一篇: Ajax:如何运用updatepanle