前言:之前使用Android內置的資料庫,感覺一大堆SQL語句,一不小心就錯了,很難受,學習了這個LItePal的開源資料庫框架,瞬間覺得Android內置的資料庫簡直是垃圾般的存在 LitePal GitHub首頁:https://github.com/LitePalFramework/LiteP ...
前言:之前使用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,"naem is ?","The Last");//刪除名字為The Last的數據 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對象,這裡我就不使用了