LitePal的学习和使用

本文详细介绍LitePal框架的环境配置及增删改查操作,对比GreenDAO,LitePal在操作便捷性方面更胜一筹,适合一般App开发使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LitePal是大神郭霖开发的ORM框架:
开源地址:https://github.com/LitePalFramework/LitePal

本篇介绍1.4.1版本,1.5.0版本更多内容请查看我写的 LitePal 1.5.0版本新增功能

因为之前在开发中也用过GreenDAO,对比两种框架我的感觉是LitePal在操作上更加方便,在效率上GreenDao更加高效,但对一般的app开发来讲LitePal已经足够满足我们的需要。好了,闲言碎语不要讲,我们直接进入今天的主题:

1、LitePal的环境配置:
1.1 在build.gradle(Moudle:app)中添加依赖:
compile 'org.litepal.android:core:1.4.1'
1.2 在main文件夹下创建资产目录(即assets目录),并在assets目录下创建litepal.xml文件,如下图:

这里写图片描述

在litepal.xml文件中配置如下代码:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--BookStore为数据库名称-->
    <dbname value="BookStore" ></dbname>
    <!--1为版本号-->
    <version value="1" ></version>
    <!--list为存放映射到数据库的实体类 集合-->
    <list>
        <!--class为添加的映射到数据库的 实体类 的全路径,这先不写,创建好实体类后再添加-->
        <mapping class=""/>
    </list>
</litepal>
1.3 创建一个全局的BaseApplication,并让它继承LitePalApplication,并在清单文件中注册BaseApplication,如下图:

这里写图片描述

这里写图片描述

2. LitePal的增删改查
2.1 初始化java实体类,并让其继承DataSupport
/**
 * Created by bai-qiang.yang on 2017/2/27.
 */

public class News extends DataSupport{

    private int id;

    private String title;

    private String content;

    private Date publishDate;

    private int commentCount;

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

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

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

    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }

    public void setCommentCount(int commentCount) {
        this.commentCount = commentCount;
    }

    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }

    public Date getPublishDate() {
        return publishDate;
    }

    public int getCommentCount() {
        return commentCount;
    }
}
2.2 在litepal.xml文件中将实体类映射到数据库中
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--BookStore为数据库名称-->
    <dbname value="BookStore" ></dbname>
    <!--1为版本号-->
    <version value="1" ></version>
    <!--list为存放映射到数据库的实体类 集合-->
    <list>
        <!--com.viciy.litpal.News为添加的映射到数据库的 实体类 的全路径-->
        <mapping class="com.viciy.litpal.News"/>
    </list>
</litepal>
2.3 创建实体类进行CRUD

2.3.1 增

News news = new News();
news.setId(1);
news.setCommentCount(2);
news.setContent("人长得漂亮?太搞笑了。。。");
news.setTitle("我是新闻,我姓沈");
news.setPublishDate(new Date());

//调用save()方法保存数据,save()继承自DataSupport
if (news.save()) {
    Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
}

2.3.2 删

//根据id删除
DataSupport.delete(News.class,id);
//根据约束条件删除
DataSupport.deleteAll(News.class, "content = ?""人长得漂亮?太搞笑了。。。");

2.3.3 改

News news = new News();
news.setContent("就是长得漂亮");
news.updateAll("title = ?","我是新闻,我姓沈");

2.3.4 查

//查询所有数据
List<News> all = DataSupport.findAll(News.class);
//查询第一条数据
News first = DataSupport.findFirst(News.class);
//查询最后一条数据
News last = DataSupport.findLast(News.class);
//select()方法,用于指定查询哪几列数据
List<News> newses = DataSupport.select("content", "title").find(News.class);
//limit方法用于指定查询结果的数量
List<News> newses = DataSupport.limit(2).find(News.class);
//offset()方法用于指定查询结果的偏移量,比如查询表中的第2条,第3条数据,就可以这样写:
List<News> newses = DataSupport.offset(1).limit(2).find(News.class)
//where()方法用于指定查询的约束条件
List<News> newses = DataSupport.where("id > ?", "1").find(News.class);
//order()方法用于指定结果的排序方式,"desc"---->降序,"asc"或者不写---->升序
List<News> newses = DataSupport.order("id desc").find(News.class);
List<News> newses = DataSupport.order("id").find(News.class);
//连缀组合进行复杂查询
List<News> newses = DataSupport.where("id > ?", "1")
                               .select("title", "content")
                               .offset(1)
                               .limit(2)
                               .order("id desc")
                               .find(News.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值