Android 中的数据库初始总结(LitePal部分)
LitePal
开源数据库在Github
上有全部的部分,你也可以去查看一下:
目录
简介
LitePal
是一款开源的Android
数据库框架,它采用了对象关系映射(ORM)的模式。
配置LitePal
声明LitePal
LitePal
如何使用呢?
首先,你得在你的app/build.gradle文件中的dependencies
闭包中添加一个内容
这是我的build.gradle最原本的内容
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation ‘androidx.appcompat:appcompat:1.1.0‘
implementation ‘androidx.constraintlayout:constraintlayout:1.1.3‘
testImplementation ‘junit:junit:4.12‘
androidTestImplementation ‘androidx.test.ext:junit:1.1.1‘
androidTestImplementation ‘androidx.test.espresso:espresso-core:3.2.0‘
}
在后面添加
implementation ‘org.litepal.guolindev:core:3.1.1‘
形成了
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation ‘androidx.appcompat:appcompat:1.1.0‘
implementation ‘androidx.constraintlayout:constraintlayout:1.1.3‘
testImplementation ‘junit:junit:4.12‘
androidTestImplementation ‘androidx.test.ext:junit:1.1.1‘
androidTestImplementation ‘androidx.test.espresso:espresso-core:3.2.0‘
implementation ‘org.litepal.guolindev:core:3.1.1‘
}
这样就完成了添加。添加这一句的意思是,声明这个版本是3.1.1,这是2020-6-22
最新的数据库版本,以后不清楚。你可以在文章的开头进入LitePal
的项目主页,然后去查看最新的版本。
这样,我们就完成了声明。
back
配置litepal.xml
文件
接下来,我们需要配置一个litepal.xml
文件
我们在app/src/main
中创建一个assets
目录
然后在该目录下面创建一个LitePal.xml
文件,然后copy下面的内容作为你的文件的内容
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--
Define the database name of your application.
By default each database name should be end with .db.
If you didn‘t name your database end with .db,
LitePal would plus the suffix automatically for you.
For example:
<dbname value="demo" />
-->
<!--这里是你的数据库的名称-->
<dbname value="demo" />
<!--
Define the version of your database. Each time you want
to upgrade your database, the version tag would helps.
Modify the models you defined in the mapping tag, and just
make the version value plus one, the upgrade of database
will be processed automatically without concern.
For example:
<version value="1" />
-->
<!--这里是你的数据库版本-->
<version value="1" />
<!--
Define your models in the list with mapping tag, LitePal will
create tables for each mapping class. The supported fields
defined in models will be mapped into columns.
For example:
<list>
<mapping class="com.test.model.Reader" />
<mapping class="com.test.model.Magazine" />
</list>
-->
<!--这里是配置映射类的地方-->
<list>
</list>
<!--
Define where the .db file should be. "internal" means the .db file
will be stored in the database folder of internal storage which no
one can access. "external" means the .db file will be stored in the
path to the directory on the primary external storage device where
the application can place persistent files it owns which everyone
can access. "internal" will act as default.
For example:
<storage value="external" />
-->
</litepal>
这样,我们就完成了配置LitePal.xml
文件
back
配置AnandManManestest.xml
文件
对于这里,有两种方法
一种是:
在AnandManManestest.xml
文件的
<application
...
></application>
中添加一句android:name="org.litepal.LitePalApplication"
,也就形成了
<application
android:name="org.litepal.LitePalApplication"
...
></application>
然后这样就完成了你的配置。
另一种是:
如果你的AnandManManestest.xml
文件中,已经存在了android:name="com.example.MyOwnApplication"
这样的文件,因为你之前对它进行配置过了。那我们就可以使用方法LitePal.initialize(context)
,去初始化。但是这是要尽早去调用这个方法,进你所能,尽早调用。
public class MyOwnApplication extends Application {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myownapplication_activity);
LitePal.initialize(this);//初始化数据库
}
...
}
这样就可以利用LitePal去使用数据库了
back
增删改查
在使用LitePal
的时候,增删改查特别简单,下面我便进行一一的介绍。
增
LitePal
中,如果需要增加一个表,那么创建一个类,并且让其继承LitePalSupport
即可。为什么要继承于LitePalSupport
?你可以这样理解:这是一个声明,声明这是我们的领地,对谁声明?对LitePal
进行声明,然后你在方法中,用你新创建的类去声明一个对象,并且调用save()
方法,你就可以进行对象的保存了。
LitePal
这样的做法(面向对象式的做法),让我们能够更好地管理我们的数据,并且能够更好地表现面向对象的一种映射。换句话说,就是将面向对象的语言和面向对象的数据库之间建立起一种映射关系,对象映射。
例子:
import org.litepal.crud.LitePalSupport;
public class Test extends LitePalSupport {
private int data;
public Test(){
}
public setData(int data){
this.data=data;
}
}
好比如这样的一个类,继承了LitePalSupport
之后,你便可以对类进行它应有的属性或者方法的书写了,然后在你之前创建的assets
文件夹中的litepal.xml
文件的
<list>
//添加映射
<mapping class="com.example.test.Test"/>
</list>
进行添加上面的那一句话,相当于映射,然后就可以使用了。
例子:
Test test=new Test();
test.setData(123);
test.save();//调用save()方法,即可对其进行保存
如果你之前定好了你自己的类,并且在后来维护的时候,想要添加更多的属性,在你需要改的类中添加新的属性,并且把数据库版本加一
即可进行对应的添加。这样的目的是在数据库对应的表中添加多一项表项。
back
删
如果需要删除,那么可以使用deleteAll()
的方法。其原型是deleteAll(modelClass: Class<*>, vararg conditions: String?)
,第一个参数是你创建的数据库的,或者说映射的类名或者表名;第二个参数是sql语句中的where部分。例子可能是下面的这种 "data == ?","123"
。
进行了这些操作之后,就可以删除了。当然,其还有很多的删除的方式,有兴趣可以一一尝试。
back
改
如果需要修改data
的值,可以使用ContentValue
,将值丢进里面,然后找到并修改。也可以使用LitePal.where("","").find()
进行查找,然后根据查找进行修改。
Test test=LitePal.where("data == ?","123").findFirst(Test.class);
test.setData(345);
test.save();//修改之后,一定得需要调用该方法,否则不能进行保存
这样就可以进行数据的修改了。
back
查
查找其实我在上面已经提及了一点,主要是利用LitePal.where().find()
去查找,其返回一个List<>
队列
List<Test> list_test=LitePal.where("data == ?","123").find(Test.class);
for(Test test:list_test){
System.out.println(test);
}
上面的样例是找到并且输出,当然你可以做其他的工作。
back
总结:
LitePal
还有很多其他的功能,比如有激进查询和懒查询,使用两个数据库等等的内容,我在这里便不进行一一介绍了。哦,提示一点就是,能使用懒查询就使用懒查询,激进查询所花费的时间多于懒查询(视情况而定)。
back
参考LitePal GitHub
上的部分内容,--->这是官网<---
如需转载,请备注出处信息