安卓进阶系列-06数据库框架(LitePal)的使用
生活随笔
收集整理的這篇文章主要介紹了
安卓进阶系列-06数据库框架(LitePal)的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
LitePal的使用
- 背景
- 安卓內(nèi)置了一個輕量數(shù)據(jù)庫SQLite,然而很多時候使用SQLite是不方便的,更多開發(fā)者習(xí)慣服務(wù)器部署MySQL之類的數(shù)據(jù)庫,而且復(fù)雜的SQL語言對于很多沒有系統(tǒng)學(xué)習(xí)過數(shù)據(jù)庫和關(guān)系數(shù)學(xué)的開發(fā)者來說略有難度。
- 這個時候ORM模型的出現(xiàn)就應(yīng)運(yùn)而生了,一個類對應(yīng)一個表,一個對象對應(yīng)表中的一條記錄,增刪查改功能全部幫你封裝好,這是個開源的時代了。
- 常用的ORM安卓框架有OrmLite、SugarORM、GreenDAO、Active Android、Realm以及本案例講解的LitePal。
- 注意:如果數(shù)據(jù)庫訪問頻繁、追求性能,那么GreenDAO將會是一個不錯的選擇,如果數(shù)據(jù)庫比較簡單,LitePal足夠了。因?yàn)長itePal本質(zhì)上使用的還是SQLite。
- 簡介
- LitePal是一款開源的Android數(shù)據(jù)庫框架,它采用了對象關(guān)系映射(ORM)的模式,并將我們平時開發(fā)最常用到的一些數(shù)據(jù)庫功能進(jìn)行了封裝,使得不用編寫一行SQL語句就可以完成各種建表和増刪改查的操作。詳細(xì)內(nèi)容可以查看官方文檔。
- 使用
- 配置
- 如今大部分開源項(xiàng)目都會提交到j(luò)center上,只需要在app/build.gradle中dependencies中添加一項(xiàng)如下。
- compile 'org.litepal.android:java:3.0.0'
- 比較新的版本如下。
- implementation 'org.litepal.android:java:3.0.0'
- 當(dāng)然,如果你使用的是Kotlin,則添加的依賴如下。
- implementation 'org.litepal.android:kotlin:3.0.0'
- 下面就是配置文件的編寫。
- 在app/src/main目錄中新建一個目錄assets,在assets目錄下新建litepal.xml文件,內(nèi)容如下。
- <?xml version="1.0" encoding="utf-8"?><litepal><dbname value="Test" ></dbname><version value="1" ></version><list></list></litepal>
- 其中, 標(biāo)簽用于指定數(shù)據(jù)庫名, 標(biāo)簽用于指定數(shù)據(jù)庫版本號,標(biāo)簽用于指定所有的映射模型。
- 配置LitePalApplication,編輯AndroidManifest.xml文件在application標(biāo)簽添加一行內(nèi)容如下。
- android:name=“org.litepal.LitePalApplication”
- 在app/src/main目錄中新建一個目錄assets,在assets目錄下新建litepal.xml文件,內(nèi)容如下。
- 如今大部分開源項(xiàng)目都會提交到j(luò)center上,只需要在app/build.gradle中dependencies中添加一項(xiàng)如下。
- 建表并放入數(shù)據(jù)庫
- 在MainActivity.java同級目錄新建bean文件夾,創(chuàng)建一個類為Teacher。
- 代碼如下。
- 修改litepal.xml添加表到數(shù)據(jù)庫(即在list標(biāo)簽內(nèi)添加下面一行)。后面每個數(shù)據(jù)庫類的建立都要加入一個mapping。
- <mapping class="com.zc.testforlitepal.bean.Teacher"></mapping>
- 現(xiàn)在,任意一個數(shù)據(jù)庫操作都會創(chuàng)建數(shù)據(jù)庫。
- 在MainActivity.java同級目錄新建bean文件夾,創(chuàng)建一個類為Teacher。
- 更新數(shù)據(jù)庫
- 現(xiàn)在向數(shù)據(jù)庫中Teacher表添加一個字段,只需要修改Teacher類中內(nèi)容,然后litepal.xml文件中version自增1即可。
- 數(shù)據(jù)庫操作
- 數(shù)據(jù)庫操作需要繼承LitePalSupport類。
- 插入(insert)
- 添加一個記錄只需要創(chuàng)建一個對象并且save即可。(目前還看不到效果,后面查詢時就知道了)
- 更新(update)
- 修改已存儲對象即可。一種save后對原對象修改。
- 一種利用where約束修改原內(nèi)容。前者實(shí)用性極差不做嘗試。
- 刪除(delete)
- 一種調(diào)用save的對象的delete方法即可。
- 使用LitePal.deleteAll方法或者delete方法。
- 查詢(query)
- 一種方法調(diào)用find方法。
- Song song = LitePal.find(Song.class, id);
- 一種方法利用條件查詢到結(jié)果集合。
- List<Song> allSongs = LitePal.findAll(Song.class);
- List<Song> songs = LitePal.where("name like ? and duration < ?", "song%", "200").order("duration").find(Song.class);
- 一種方法調(diào)用find方法。
- 配置
- 補(bǔ)充說明
- MainActivity.java代碼
- package com.zc.testforlitepal;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.zc.testforlitepal.bean.Teacher;import org.litepal.LitePal;import org.litepal.crud.LitePalSupport;import java.util.List;public class MainActivity extends AppCompatActivity {private Context mContext;private TextView text;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = getApplication();text = findViewById(R.id.query_result);findViewById(R.id.create_database).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(mContext, "ZCNB", Toast.LENGTH_SHORT);try {LitePal.initialize(mContext);Toast.makeText(mContext, "數(shù)據(jù)庫創(chuàng)建完成", Toast.LENGTH_SHORT).show();}catch (Exception e){Toast.makeText(mContext, "出現(xiàn)操作故障", Toast.LENGTH_SHORT).show();}}});findViewById(R.id.insert_data).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Teacher mTeacher = new Teacher();mTeacher.setId(1);mTeacher.setAge(12);mTeacher.setName("李二");mTeacher.setValue(2);mTeacher.save();Toast.makeText(mContext, "插入成功", Toast.LENGTH_SHORT).show();}});findViewById(R.id.update_data).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Teacher mTeacher = new Teacher();mTeacher.setAge(18);mTeacher.updateAll("id = ?", "1");Toast.makeText(mContext, "更新成功", Toast.LENGTH_SHORT).show();}});findViewById(R.id.delete_data).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {LitePal.deleteAll(Teacher.class, "id >= ?","1");Toast.makeText(mContext, "刪除成功", Toast.LENGTH_SHORT).show();}});findViewById(R.id.query_data).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {List<Teacher> allTeacher = LitePal.findAll(Teacher.class);for(Teacher mt: allTeacher){text.setText(mt.getId()+" "+mt.getName()+" "+mt.getAge()+" "+mt.getValue()+"\n");}Toast.makeText(mContext, "查詢成功", Toast.LENGTH_SHORT).show();}});}}
- 參考書《第一行代碼》
- Kotlin代碼與java類似,可見官網(wǎng)
- 具體代碼可以查看我的GitHub,歡迎star或者fork
- MainActivity.java代碼
總結(jié)
以上是生活随笔為你收集整理的安卓进阶系列-06数据库框架(LitePal)的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-分类之AdaBoost原理及实
- 下一篇: 安卓进阶系列-07数据库框架(Green