Android 中的数据库初始总结(LitePal部分)

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上的部分内容,--->这是官网<---

如需转载,请备注出处信息

https://www.cnblogs.com/Yunrui-blogs/p/13237961.html

posted @ 2020-07-05 10:21  野生的Lemon柠檬  阅读(572)  评论(0编辑  收藏  举报

呱呱呱呱呱🐸