2018android数据库框架,LitePal——Android数据库框架完整使用手册

LitePal for Android

253bdf19029c3ed963b10b50931cbcee.png

LitePal是一个开源的Android库,使开发人员使用SQLite数据库非常简单。您无需编写任何SQL语句就可以完成大部分数据库操作,包括创建或升级表,增、删、改、查操作,合计函数等。LitePal的设置也很简单,您只许5分钟就可以将其集成到您的项目中。

现在就开始体验吧!

功能

使用对象关系映射(ORM)模式。

几乎零配置(仅有一个配置文件,属性值还非常少)。

自动维护所有数据表(例如,创建,更改或删除表)。

支持多数据库

封装了多种API,是开发者避免了编写SQL语句的烦恼。

超实用的查询API。

您仍可以通过编写SQL语句进行操作,但封装好的API会更加方便快捷。

更多功能,敬请期待。

最新版下载

litepal-1.5.1.jar (库中包含 *.class 文件)

litepal-1.5.1-src.jar (库中包含 *.class 文件和 *.java 文件)

快速配置

1. 导入库

使用 Eclipse

在上面的部分下载最新的jar。 或浏览所有版本,选择一个下载。

把jar文件放在您Android项目的libs目录下。

使用 Android Studio

编辑您的 build.gradle 文件,加入如下依赖:

dependencies {

compile 'org.litepal.android:core:1.5.1'

}

2. 配置 litepal.xml

在您项目中创建“assets”目录,并在其中创建“litepal.xml”文件,将下方代码拷贝其中。

这是唯一的配置文件,并且要配置的属性也非常简单。

dbname 配置该项目数据库名称

version 配置数据库版本号。每次您要更新库时,使其值加一。

list 配置映射类。

storage 配置数据库文件的存储位置。 值为“internal” 或 “external”。

3. 配置 LitePalApplication

你不详一直传递Context参数。 为了使API变得简单,只需在AnandManManestest.xml中配置LitePalApplication,如下所示:

android:name="org.litepal.LitePalApplication"

...

>

...

当然,您可能已经在此配置好了您自己的应用程序,如:

android:name="com.example.MyOwnApplication"

...

>

...

这没关系,LitePal也可以接受。 只要在您的程序中调用 LitePal.initialize(context) 即可:

public class MyOwnApplication extends AnotherApplication {

@Override

public void onCreate() {

super.onCreate();

LitePal.initialize(this);

}

...

}

确保尽可能早的调用这个方法。 最好在 onCreate() 方法中调用。并始终记住使用应用程序上下文作为参数。 不要使用任何活动或服务实例作为参数,否则可能会发生内存泄漏。

开始使用

配置成功后,您就可以使用这些功能强大的方法了。

1. 创建数据表

首先建立一个模型。例如您要建立两个模型Album和Song。可以按如下方式定义:

public class Album extends DataSupport {

@Column(unique = true, defaultValue = "unknown")

private String name;

private float price;

private byte[] cover;

private List songs = new ArrayList();

// generated getters and setters.

...

}

public class Song extends DataSupport {

@Column(nullable = false)

private String name;

private int duration;

@Column(ignore = true)

private String uselessField;

private Album album;

// generated getters and setters.

...

}

然后将这些模型添加到litepal.xml映射列表中:

好的!数据表会在您下次操作数据库的时候自动创建。例如,使用以下代码获取SQLiteDatabase:

SQLiteDatabase db = LitePal.getDatabase();

现在这些表会自动生成如下这样的SQL语句:

CREATE TABLE album (

id integer primary key autoincrement,

name text unique default 'unknown',

price real,

cover blob

);

CREATE TABLE song (

id integer primary key autoincrement,

name text not null,

duration integer,

album_id integer

);

2. 更新数据表

使用LitePal更新数据表也非常的简单,只需要吧实例模型修改成您想要的数据就可以:

public class Album extends DataSupport {

@Column(unique = true, defaultValue = "unknown")

private String name;

@Column(ignore = true)

private float price;

private byte[] cover;

private Date releaseDate;

private List songs = new ArrayList();

// generated getters and setters.

...

}

已添加releaseDate 字段,并注释了price 字段。 然后增加litepal.xml中的版本号:

数据表会在您下次操作数据库的时候自动更新。releasedate 列会被加入到 album 表中,并且 price 列将会被删除掉。album 表中除了被删除的列,其他的数据都依然存在。

但是,对于一些LitePal无法处理的升级条件,升级表中的所有数据将被清除:

添加一个注释为unique = true的字段。

将字段的注释更改为unique = true。

将字段的注释更改为nullable = false。

注意上述导致数据丢失的情况。

3. 保存数据

保存数据的API是面向对象的。从DataSupport继承的每个模型都可以使用save()方法来保存数据:

Album album = new Album();

album.setName("album");

album.setPrice(10.99f);

album.setCover(getCoverImageBytes());

album.save();

Song song1 = new Song();

song1.setName("song1");

song1.setDuration(320);

song1.setAlbum(album);

song1.save();

Song song2 = new Song();

song2.setName("song2");

song2.setDuration(356);

song2.setAlbum(album);

song2.save();

以上操作会将 album, song1 and song2 插入到数据库中并进行关联。

4. 更新数据

最简单的办法,就是先通过find()方法找到待更新的记录,并使用save()方法更新数据:

Album albumToUpdate = DataSupport.find(Album.class, 1);

albumToUpdate.setPrice(20.99f); // raise the price

albumToUpdate.save();

任何一个集成 DataSupport 类的模块都有 update() 和 updateAll() 两个方法。您可以使用指定的ID更新单个记录:

Album albumToUpdate = new Album();

albumToUpdate.setPrice(20.99f); // raise the price

albumToUpdate.update(id);

或者您也可以通过where条件来更新多条记录:

Album albumToUpdate = new Album();

albumToUpdate.setPrice(20.99f); // raise the price

albumToUpdate.updateAll("name = ?", "album");

5. 删除数据

您可以使用DataSupport类中delete()这个静态方法来删除单条记录:

DataSupport.delete(Song.class, id);

或者使用 deleteAll() 删除多条记录:

DataSupport.deleteAll(Song.class, "duration > ?" , "350");

6. 查询数据

通过指定ID查询单条记录:

Song song = DataSupport.find(Song.class, id);

查询某一表中的所有记录:

List allSongs = DataSupport.findAll(Song.class);

使用API构建复杂查询:

List songs = DataSupport.where("name like ?", "song%").order("duration").find(Song.class);

7. 异步操作

默认情况下,每个数据库操作都在主线程上。如果您的操作可能花费很长时间,例如保存或查询大量记录。 您可能需要使用异步操作。

LitePal支持所有增、删、改、查方法的异步操作。如果要从后台线程的song表中查找所有记录,请使用如下代码:

DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() {

@Override

public void onFinish(List t) {

List allSongs = (List) t;

}

});

只需使用 findAllAsync() 代替 findAll(), 并附加一个listen()方法,操作一旦完成,查找结果将回调到onFinish()方法。

Abd异步保存是完全相同的:

Album album = new Album();

album.setName("album");

album.setPrice(10.99f);

album.setCover(getCoverImageBytes());

album.saveAsync().listen(new SaveCallback() {

@Override

public void onFinish(boolean success) {

}

});

只需使用saveAsync()替代save()。它会将Album异步保存到数据库中,保存结果将回调到onFinish()方法。

8. 多数据库

如果您的应用需要多个数据库,LitePal完全支持它。 您可以在运行时创建任意数量的数据库。 例如:

LitePalDB litePalDB = new LitePalDB("demo2", 1);

litePalDB.addClassName(Singer.class.getName());

litePalDB.addClassName(Album.class.getName());

litePalDB.addClassName(Song.class.getName());

LitePal.use(litePalDB);

这将创建一个具有singer,album和song表的demo2数据库。

如果您只想创建一个与litepal.xml配置相同新的数据库,您可以使用以下命令:

LitePalDB litePalDB = LitePalDB.fromDefault("newdb");

LitePal.use(litePalDB);

您可以随时切换回默认数据库:

LitePal.useDefault();

您可以通过指定的数据库名称删除任何数据库:

LitePal.deleteDatabase("newdb");

Android 数据库框架总结(转)

转自 http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完 ...

Android 数据库框架总结,总有一个适合你!

一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...

Android 数据库框架OrmLite的使用(一)

在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite

Android数据库框架--GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架--ORMLite轻量级的对象关系映射 ...

Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

Android 数据库框架ormlite

Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

Android数据库框架-----ORMLite关联表的使用

上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...

Android数据库框架-----ORMLite 的基本用法

ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...

DBExecutor android 数据库框架

https://github.com/eltld/DBExecutor android 数据库框架,sqlite database

随机推荐

关于HTML是什么,能做什么

HTML(Hyper Text Mark-up Language )即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出.设计 HTML 语言的目的是为了能把存放在一台电脑 ...

[注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"

开发LED大屏显示.40-20mA模拟量输出的时候,经常要与串口打交道.但是Windows自带的SerialPort串口操作组件貌似兼容性 不是太好,或是SerialPort本身有BUG,在操作PCI ...

Linux学习笔记6-Linux根目录下各个目录的作用

/bin:存放最常用命令:  /boot:启动Linux的核心文件: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基本的动态链接共享库: /mnt:一 ...

解题报告 HDU1176 免费馅饼

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

在Linux下用gcc编译hello world

1. 确保Linux系统里已经装好了gcc 测试:输入gcc后是如下的结果就说明已经安装成功 2. 创建HelloWorld.c 使用 touch 创建一个空文件; 用vim编辑 按下A或者I 插入 ...

创建maven工程的时候卡死的解决办法

在idea的maven,runner,properties里面添加 archetypeCatalog=internal

基于Django rest framework 和Vue实现简单的在线教育平台

一.基于api前端显示课程详细信息 1.调整Course.vue模块 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

python------面向对象进阶反射详解(重点)

一.反射 通过字符串映射或者修改程序运行时的状态,属性,或者方法. 1.getattr(object,name,default=None) 2.hasattr(object,name) 3.setat ...

获取linux服务进程号

ps -ef | grep "服务名" | grep -v "grep" | awk '{print $2}' # ps -ef|grep "被查询的 ...

黄聪:保持web页面生成的app一直处于用户登录状态不退出

用户登录了会员中心,怎么保持登录状态! 由于封壳的内核及组件肯定没有浏览器APP应用那么强大,所以目前暂时的解决方案是: jquery.cookie.js  本文转载至:https://www.cnb ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值