前言
说真的安卓原生的数据操作是真的复杂,对于我这种渣渣来说确实是个门槛,所以准备先从郭霖大神的开源项目litepal学起,后期再填坑,看了多篇文章显示litepal的性能可能稍微弱一点,但是对于一些小的应用APP,那种差距简直是微不足道的,况且这个开源库可读性,效率都提高了。废话不多说,下面开始。
简单的开始-添加依赖
现在一般都是Android Studio 的开发者,所以直接在项目的build.gradle中添加下面的代码
<pre>
dependencies {
compile 'org.litepal.android:core:1.3.0'
}
</pre>
配置litepal文件
在assets文件中添加litepal.xml文件(一般assets文件夹新建 并和 src 同目录很重要)
文件内容如下
<pre>
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="litepal" ></dbname>
<version value="1" ></version>
<list>
<mapping class="com.example.xxx.testlitepal.Book"></mapping>
</list>
</litepal>
</pre>
其中dbname标签的value值为数据库名
version标签的value值为当前的数据库版本号
升级时只需版本号 +1
<list>标签中<mapping class="这里是完整的类的路径"></mapping>
配置liteAppliaction
<pre>
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</pre>
在AndroidManifest.xml添加 android:name="org.litepal.LitePalApplication"
也可以继承自己的Application
映射模型类
自己需要先建一个数据模型类 然后就可以对数据库进行映射
(抄一段)
LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。
我的建类如下
<pre>
public class Book extends DataSupport{
private int id;
private String author;
private int pages;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
</pre>
继承DataSupport可以进行curd操作,不继承则无法操作。。。
貌似private 声明的属性才能映射到数据库中,可以据此选择是否需要映射到数据库中
添加数据
- 声明一个数据类
- 设置该类的属性值
- 调用方法save()
示例:
<pre>
Book book=new Book();
book.setAuthor("dfdf");
book.setPages(12);
if(book.save())Toast.makeText(MainActivity.this,"yes",Toast.LENGTH_SHORT).show();
else Toast.makeText(MainActivity.this,"no",Toast.LENGTH_LONG).show();
</pre>
同时你也看到了 save()方法是有返回值的。
增加数据
其实和新增差不多
先进行数据赋值,然后对特定条件下的数据进行修改更新。
代码示例如下:
<pre>
ContentValues values = new ContentValues();
//更新内容
values.put('author','aaa');
//设置对应的数据进行更新
DataSupport.update(Book.class,values,3);
//这种代码是默认对id=3 的 数据项进行更新,当然不止这种方式进行更新。
//下面是对应的条件进行更新。。下面用法我就不赘述了,也很简单
DataSupport.updateAll(Book.class, values, "author = ?", "你好");
//还有一种方法
Book book = new Book();
book.setAuthor("haha")
updateBook.update(2);
</pre>
删除数据
查询数据
相关参考
郭霖大神的数据库相关博客
http://blog.csdn.net/guolin_blog/article/details/38461239
简书其他大佬的
http://www.jianshu.com/p/557682e0a9f0
还有很多,大家多谷歌。
总结
这个开源库虽然使用很简单,但是稍微牺牲了一些性能,所以这个大家平时写项目时候效率很高,但是原生的Sql一定要学。就酱紫。