Android開發——使用LitePal開源ORM框架


前言:之前使用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文件直接使用LitePalgetDatabase方法創建數據庫,即是添加下面的代碼即可,寫在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對象,這里我就不使用了

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM