您的位置:首页 > 移动开发 > Android开发

Android数据库——LitePal

2016-04-21 10:20 627 查看
一,快速配置

1,引入Jar包或源码

首先我们需要将LitePal的jar包引入到项目当中,可以点击这里查看LitePal的最新版本

dependencies {
compile 'org.litepal.android:core:1.3.1'
}


2, 配置litepal.xml

在项目的assets目录下面新建一个litepal.xml文件

<?xml version="1.0" encoding="utf-8"?>
<litepal>

<dbname value="demo" ></dbname>

<version value="1" ></version>

<list>
<mapping class="com.test.model.Reader"></mapping>
<mapping class="com.test.model.Magazine"></mapping>
</list>

</litepal>


3,配置LitePalApplication

由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下所示:

<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>


如果有自己的Application,继承它就行了。

二,建表

public class News extends DataSupport{
private int id;
private String title;
private String content;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}


其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的嘛。

根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

如果News类中有一个字符串字段我并不想让它映射到数据库表中,这该怎么办呢?对此,LitePal同样采用了一种极为轻量的解决方案,只有声明成private修饰符的字段才会被映射到数据库表中,如果你有某一个字段不想映射的话,只需要将它改成public、protected或default修饰符就可以了。

然后编辑litepal文件

<litepal>
<dbname value="demo"></dbname>
<version value="1"></version>
<list>
<mapping class="com.app.liulongbing.green.News"></mapping>
</list>
</litepal>


三,存储

private void add() {
News news = new News();
news.setTitle("test");
news.setContent("1234");
news.save();
}


四,查询数据

查询news表中id为1的这条记录

News news= DataSupport.find(News.class,1);


获取news表中的第一条数据或者最后一条数据:

News news= DataSupport.findFirst(News.class);

News news= DataSupport.findLast(News.class);


查询所有的

List<News> allNews=DataSupport.findAll(News.class);


连缀查询

List<News> newsList = DataSupport.select("title", "content")
.where("commentcount > ?", "0")
.order("publishdate desc").limit(10).offset(10)
.find(News.class);


五,修改数据

修改id为1的

News news=new News();
news.setTitle("上海");
news.update(1);


将title=上海的所有新闻全部改掉

News news=new News();
news.setTitle("上海今天下雨");
news.updateAll("title=?","上海");


六,删除数据

删除id为1的

DataSupport.delete(News.class,1);


删除title为**的所有新闻

DataSupport.deleteAll(News.class, "title = ?", "**");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: