LitePal数据存储
LitePal數據存儲
- 配置LitePal
- 創建數據庫
- 添加數據
- 查詢數據
- 更新數據
- 刪除數據
- 博客推薦
安卓之所以如此的受歡迎,不僅在于面向用戶的一系列產品,面向我們開發者同樣也非常友好。
GitHub上擁有成百上千的優秀Android開源項目,這使得很多時候我們開發時不用自己去編寫那些冗長的代碼,處理那些復雜的邏輯。調用一下幾分鐘就搞定,甚至比復制粘貼還容易。
那么我們一起來看一下這個開源庫——LitePal。
配置LitePal
首先在app/build.gradle文件的dependencies閉包中添加如下代碼,并Sync Now:
implementation 'org.litepal.android:java:3.0.0'其中3.0.0是版本號,是目前最新的版本。
然后我們切換至Project文件管理模式,在app的src文件夾下的main文件夾處新建一個名為assets的Directory(選擇Directory類型),然后在assets文件夾下新建一個litepal.xml文件(選擇File類型,文件名為litepal.xml,后綴.xml也要打在文件名中),建好后添加如下代碼:
<?xml version="1.0" encoding="utf-8"?> <litepal><dbname value="BookStore"> </dbname><version value="1"> </version><list></list> </litepal>dbname標簽用于指定數據庫名,version標簽用于指定數據庫版本號,list標簽則用于指定所有的映射模型。
最后,我們再修改一下AndroidManifest.xml中的代碼,在<application下添加如下代碼:
<applicationandroid:name="org.litepal.LitePalApplication" //添加這一行代碼創建數據庫
定義一個Book類,代碼如下:
(自動生成get和set:定義好變量后按Alt+Insert,然后在彈出的框內選中Getter and Setter,按下shift或ctrl鍵選中全部,最后點擊ok)
接下來我們將Book類添加到映射模型當中,在litepal.xml的list標簽中加入代碼:
<list><mapping class="com.example.mylitepaltest.Book"></mapping>//添加這一句</list>我們通過<mapping標簽聲明我們要配置的映射模型類。
最后,在MainActivity下添加如下代碼就完成了建表,也就是創建數據庫的過程:
LitePal.getDatabase();添加數據
完成建表之后就要向表中添加數據。
修改Book類,使其繼承LitePalSupport:
public class Book extends LitePalSupport然后設置一個Button按鈕用來添加數據:
<Buttonandroid:id="@+id/add_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="add"></Button>在主函數中給按鈕注冊點擊監聽事件,并給待添加的數據進行賦值:
Button addData=findViewById(R.id.add_data); addData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book=new Book();book.setName("高等數學");book.setAuthor("同濟大學");book.setPages(337);book.setPrice(39.00);book.save();Book book2=new Book();book2.setName("線性代數");book2.setAuthor("同濟大學");book2.setPages(236);book2.setPrice(16.80);book2.save();} });查詢數據
LitePal中的簡單查詢用法如下:
Object object = LitePal.findFirst(Object.class); //查詢表中第一條數據 Object object = LitePal.findLast(Object.class); //查詢表中最后一條數據 Object object = LitePal.find(Object.class,i); //查詢表中第i條數據 List<Object> objects = LitePal.findAll(Object.class, a, b, c, d); //查詢表中a,b,c,d條數據LitePal中的連綴查詢用法如下:
// 查詢滿足某條件的每條數據 List<Object> objects = LitePal.where("條件", "值").find(Object.class); //查詢滿足某條件的對應數據的某些列 List<Object> objects = LitePal.select("列1", "列2").where("條件", "值").find(Object.class);比如,在我們的BookStore表里,如果我們想查詢表中第一條數據,我們可以先設置一個按鈕,和一些顯示數據的文本,并在主函數中編寫如下代碼:
<Buttonandroid:id="@+id/simpleQuery_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="simpleQuery"></Button><Buttonandroid:id="@+id/adornmentQuery_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="adornmentQuery"></Button><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/name"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/author"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/price"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/pages"/> Button simpleQuery=findViewById(R.id.simpleQuery_data);simpleQuery.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book= LitePal.find(Book.class,1);display(book);}});如果我們想查詢表中頁碼大于250頁的書的信息,我們可在主函數中編寫如下代碼:
Button adornmentQuery=findViewById(R.id.adornmentQuery_data);adornmentQuery.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book = LitePal.select("name","price").where("pages > ?","250").findFirst(Book.class);display(book);}});在主函數中編寫一個display方法,用來展示書本信息:
public void display(Book book){name.setText(book.getName());author.setText(book.getAuthor());price.setText(""+book.getPrice());pages.setText(""+book.getPages());}更新數據
如果我們想指定所有"name"為"高等數學"并且"author"為"同濟大學"的書書價更新為1,我們可以先通過set方法來更新我們想要修改的數據,然后通過updateAll()方法執行更新操作。
Button updateData=findViewById(R.id.update_data);updateData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Book book=new Book();book.setPrice(1);book.updateAll("name=? and author=?","高等數學","同濟大學");Book book1 = LitePal.where("name = ? and author=?","高等數學","同濟大學").findFirst(Book.class);display(book1);}});刪除數據
在LitePal中刪除數據使用delete函數,用法如下
//刪除表中第i條數據 LitePal.delete(Object.class, i);需要注意的是,這不僅僅會將表中id為2的記錄刪除,同時還會將其它表中以這條記錄作為外鍵的數據一起刪除掉,因為外鍵既然不存在了,那么這么數據也就沒有保留的意義了。(外鍵是指這條記錄在另一張表中是參考的基礎,在大家學完數據庫這門課程之后會有更多了解)
博客推薦
關于數據存儲,書上介紹了不止一種方法,并且更加詳細,每種方法都有其優缺,大家可以學習和體會。
這里推薦一下郭霖大神的博客
Android數據庫高手秘籍(零)——前言
http://blog.csdn.net/guolin_blog/article/details/38083103
Android數據庫高手秘籍(一)——SQLite命令
http://blog.csdn.net/guolin_blog/article/details/38461239
Android數據庫高手秘籍(二)——創建表和LitePal的基本用法
http://blog.csdn.net/guolin_blog/article/details/38556989
Android數據庫高手秘籍(三)——使用LitePal升級表
http://blog.csdn.net/guolin_blog/article/details/39151617
Android數據庫高手秘籍(四)——使用LitePal建立表關聯
http://blog.csdn.net/guolin_blog/article/details/39207945
Android數據庫高手秘籍(五)——LitePal的存儲操作
http://blog.csdn.net/guolin_blog/article/details/39345833
Android數據庫高手秘籍(六)——LitePal的修改和刪除操作
http://blog.csdn.net/guolin_blog/article/details/40083685
Android數據庫高手秘籍(七)——體驗LitePal的查詢藝術
http://blog.csdn.net/guolin_blog/article/details/40153833
Android數據庫高手秘籍(八)——使用LitePal的聚合函數
http://blog.csdn.net/guolin_blog/article/details/40614197
下面是迭代的版本:
2016-03-03 郭霖
LitePal 1.3.1發布了,從此支持圖片存儲!
http://mp.weixin.qq.com/s/7tDifDvOHr7YI7zCS9fpmQ
2016-11-15 郭霖
你們要的多數據庫功能終于來了
http://mp.weixin.qq.com/s/C7nbJXOS9lYPgOda-8Pw0A
2017-03-07 郭霖
LitePal 1.5.0版本發布,你想要的都在這里
http://mp.weixin.qq.com/s/GXPkrkiHk4MWNnpCLzTf_Q
2017-08-15
LitePal 1.6.0版本來襲,數據加解密功能保障你的應用數據安全
https://mp.weixin.qq.com/s/TSp36cnKLxUmAHjT86UCrQ
2018-06-11
Android數據庫高手秘籍(九),趕快使用LitePal 2.0版本吧
https://blog.csdn.net/guolin_blog/article/details/80586028
總結
以上是生活随笔為你收集整理的LitePal数据存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7创建虚拟无线网络
- 下一篇: VS或编译的时候不生成Release文件