【Android学习】Litepal简单用法

最近在准备开发一个天气预报,有许多基础知识还不是很牢固,开发时候遇到的Litepal就不是很会,看了大神的文章感觉清楚很多在此记录学习一下。文章转自:https://blog.csdn.net/generallizhong/article/details/89176464
下面是我总结的LitePal(其中有对我自己不太懂的地方的特别解释):

LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上。

1、准备需要的JAR包 这里下载https://github.com/LitePalFramework/LitePal#latest-downloads
在这里插入图片描述
下载好了jar包之后,复制到项目的libs目录中然后引用

当然如果不想用jar包的话,也可以把LitePal的源码下载下来,然后作为一个library库导入到项目当中,再引用这个library库就可以了。

这里我使用的事JAR包进行介绍

2、设置litepal.xml文件,这里比较重要

首先我们需要建一个assets文件夹,这个文件夹和java文件平级
在这里插入图片描述
其次在assets文件下新建一个litepal.xml,为了快速可以直接copy一个进去

<?xml version="1.0" encoding="utf-8"?> 
<litepal> 
    <dbname value="demo" ></dbname> 库名称
   
    <version value="1" ></version> 库版本,可升级
   
    <list> 
这里是添加表名,后面讲
    </list> 
</litepal> 

用于设定数据库的名字,用于设定数据库的版本号,用于设定所有的映射模型

3、需要配置Application

由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下Application,所有的数据库操作就都不用再传Context了
在这里插入图片描述
可能有些程序可能会有自己的Application,并在这里配置过了,那么我们就用其他办法解决,那就只需要修改一下myApplication的继承结构,让它不要直接继承Application类,而是继承我们定义的LitePalApplication类

操作数据库时需要使用到Context参数,我们不想每次都传递这个参数,那么只需要在AndroidManifest.xml中配置下LitePalApplication即可,如下:

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

当然,你可能有自己的Application并且已经配置好,如下:

    <manifest>
        <application
            android:name="com.example.MyOwnApplication"
            ...
        >
        ...
        </application>
    </manifest>

没关系,只需要将MyOwnApplication由原来的继承Application类改成继承LitePalApplication类就可以,如下:

public class MyOwnApplication extends LitePalApplication {
   ...
}

如果你的MyOwnApplication必须继承另外的Application类,如AnotherApplication类,那么你可以直接调用LitePalApplication.initialize(context)而无需继承LiteApplication类,如下:

public class MyOwnApplication extends AnotherApplication {

   @Override
   public void onCreate() {
       super.onCreate();
       LitePalApplication.initialize(this);
   }
   ...
}

LitePalApplication.initialize(context)的调用原则是尽可能早,比如合适的调用位置是在Application的onCreate()里调用。调用时传递的参数是Application的context,不要使用任何activity或service的实例作为参数,否则可能发生内存泄漏。

到了这里我们的准备工作已经做完了,接下来我们就可以开始建表了

4、根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张news表,就应该有一个对应的News模型类。新建一个News类,LitePal要求所有的实体类都要继承自DataSupport这个类

public class News extends DataSupport {
//id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的
    private int id;
 
    private String title;
 
    private String content;
 
    private Date publishDate;
 
    private int commentCount;
 
    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;
    }
 
    public Date getPublishDate() {
        return publishDate;
    }
 
    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }
 
    public int getCommentCount() {
        return commentCount;
    }
 
    public void setCommentCount(int commentCount) {
        this.commentCount = commentCount;
    }
}

LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的,LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要其他的任何配置。

现在表已经建好,我们需要将表名在assets的litepal.xml中申明(写进去映射)

<?xml version="1.0" encoding="UTF-8" ?>
<litepal>
    <!--数据库的名字-->
    <dbname value="demo"></dbname>
    <!--数据库的版本号-->
    <version value="1"></version>
 
    <!---->
    <list>
        <mapping class="com.example.administrator.mylitepal.News"></mapping>
    </list>
</litepal>

现在基本已经完成,现在只要你对数据库有任何的操作,news表就会被自动创建出来。比如说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,在onCreate中调用

SQLiteDatabase db = Connector.getDatabase();

这里初始化一下

public class myApplication extends LitePalApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
}

此时news表就应该已经创建成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值