前言:之前使用Android內置的數據庫,感覺一大堆SQL語句,一不小心就錯了,很難受,學習了這個LItePal的開源數據庫框架,瞬間覺得Android內置的數據庫簡直是垃圾般的存在
LitePal GitHub首頁:https://github.com/LitePalFramework/LitePal
配置步驟
1.添加依賴
切換project模式,展開APP的文件夾,找到build.gradle文件,去里面添加依賴,這里我用的是最新版本,可以在LitePal的Github官網上找到最新的版本
2.配置LitePal.xml文件及相關設置
在main文件夾中新建一個asstes文件夾,之后,創建LitePal.xml,復制LitePal上的GItHub給出的代碼,這里我就直接寫了,其中,dbname代表數據庫的名稱,version代表版本號,list標簽之下有表(專業術語為映射模型類),這里之后會提及
此外,我們還需要在AndroidMainfest文件中添加一行代碼android:name="org.litepal.LitePalApplication"
3.創建一個Java Bean類
這里創建了一個書的bean類,有着三個成員變量,之后,使用alt+insert,選擇getter and setter,添加get與set方法
4.在LItePal.xml文件中list標簽下配置表(映射模型類)
記得包名要寫完整
使用步驟:
1.創建和升級數據庫
在相關activity的java文件直接使用LitePal的getDatabase方法創建數據庫,即是添加下面的代碼即可,寫在onClick事件中即可,這里就不放截圖
LitePal.getDatabase();
升級數據庫,直接在Bean的java文件中添加新的成員變量及其的get與set方法即可,升級數據庫的代碼還是使用上面的那一行代碼
舉個例子,例如上述,我們想要添加一個出版社的列,我們只需要在Book里面創建一個成員變量,及get與set方法,之后,去LitePal.xml文件中,將version的版本加1,也就是改為2即可,其他的都不需要更改
例如,我們想要再加一張表,也是類似的操作,創建一個Bean類,之后,在LitePal.xml文件中使用mapping標簽,同時,將版本號加一,也就是改為2即可,其他的也是不需要改變
2.添加數據
修改模型類(也就是Book),使其繼承DataSupport
之后,我們只需要新建一個對象,調用其set方法,為其里面的成員變量賦值,之后,調用save方法,就是成功地往數據庫中添加了數據
3.修改(更新)數據
更新的操作其實很簡單,使用udateAll方法即可,例如,我們要將上面書名為The Last的作者改為John,價格改成16
updateAll里面寫了約束條件,也就是書名為The Last的那一條數據,修改,如果updateAll里面無參數,就是將表里面的數據的作者與價格更改為John和16
4.刪除數據
調用DataSupport的deleteAll方法,與上面的updateAll類似,參數里填約束條件,如果不寫,就是刪除整張表
DataSupport.deleteAll(Book.class,"name is ?","The Last");//刪除名字為The Last的數據
DataSupport.deleteAll(Book.class,"name is ? and price is ?","The Last","15");//刪除名字為The Last,價格為15的的數據 DataSupport.deleteAll(Book.class,"price < ?","16");//刪除價格低於16的數據
5.查找數據
查找方法調用的DataSupport的findAll方法即可,下面給出示例代碼
select指定查詢列,where查找出符合約束條件的數據,order將查詢結果排序,limit限制查詢數據數目
List<Book> books = DataSupport.findAll(Book.class);//查找Book這張表的全部數據,返回的是一個List List<Book> books1 = DataSupport.select("name","price").find(Book.class);//指定查詢Book這張表中的name與price兩列的數據,返回的也是一個List List<Book> books2 = DataSupport.where("price > ?","16").find(Book.class);//指定在Book這張表查找符合價格大於16(約束條件)的數據,返回的是一個List List<Book> books4 = DataSupport.order("price desc").find(Book.class);//將查詢結果按照價格從高到低排序(desc 降序),不寫或者asc則是升序 List<Book> books5 = DataSupport.limit(3).find(Book.class);//查詢Book表中的前三條數據
值得一提的是,可以使用findBySQL方法進行原生的查詢,也就是之前使用內置數據庫的方法,返回的是一個Cursor對象,這里我就不使用了