Android SQLite轻量框架LitePal基本使用
来源:互联网 发布:搞不好是洗衣粉 知乎 编辑:程序博客网 时间:2024/05/16 19:00
简介
LitePal是一个开源的安卓库,允许程序员极其简单的操作SQLite数据库。甚至不用写一句SQL语句就能完成大多数SQLite数据库操作,包括创建去或者更新表,CRUD操作,聚合操作等等。
特点
- 使用对象关系映射模型(ORM)。
- 基本上0配置,仅仅需要一个配置文件。
- 自动与表保持联动(创建、修改或者删除)。
- 多数据库支持。
- 对SQL语句进行封装。
- 简洁的查询语句。
- 同时支持原生API的使用。
配置
导入库
下载jar文件或者直接在gradle中引入依赖:
dependencies { compile 'org.litepal.android:core:1.5.1'}
配置litepal.xml文件
创建assert文件夹(与res同级),在其中创建litepal.xml文件,在里面如下配置:
<?xml version="1.0" encoding="utf-8"?><litepal> <!-- 定义数据库的名称,默认情况下需要添加后缀.db,如果没有添加litepal内部将会自动添加该后缀 --> <dbname value="demo" /> <!-- 定义数据库的版本,每次你想升级数据库的时候在此处进行版本号定义.通常当你修改了下面mapping中的model类后需要升级,版本号加一 --> <version value="1" /> <!-- 定义模型类(如同javabean)在mapping标签中,litepal将会为每个类创建一个表,表中的列将是类中声明为private的成员.例如: <list> <mapping class="com.test.model.Reader" /> <mapping class="com.test.model.Magazine" /> </list> --> <list> </list> <!-- 定义数据库文件创建在内部存储还是外部存储,值为internal或者external 默认为internal 例如: <storage value="external" /> --> <storage value="external" /></litepal>
配置LitePalApplication
为了避免每次使用都需要传递Context变量,可以直接在AndroidManifest.xml文件中使用LitePalApplication.
<manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application></manifest>
如果有自定义的Application,让它继承至LitePalApplication即可.然后需要Application的onCreate方法中初始化:
public class MyOwnApplication extends AnotherApplication { @Override public void onCreate() { super.onCreate(); LitePal.initialize(this); } ...}
使用
创建表
定义模型类,假如创建了一个Album类:
public class Album extends DataSupport { @Column(unique = true, defaultValue = "unknown") private String name; private float price; private byte[] cover; private List<Song> songs = new ArrayList<Song>(); // generated getters and setters. ...}
然后在配置文件litepal.xml文件中配置:
<list> <mapping class="org.litepal.litepalsample.model.Album" /></list>
之后在你下次操作数据库时该表自动创建.你就假设该表已经存在,当你打开,插入数据等操作时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<Song> songs = new ArrayList<Song>(); // generated getters and setters. ...}
这里添加了一个releaseDate变量(字段),price变量(字段)注释为忽略.
然后在litepal.xml文件中更新版本号:
<!-- 假设之前版本号为1 --><version value="2" ></version>
表将会在下次对数据库进行操作时更新,添加一个releaseDate字段,移除price字段.
保存数据
继承自DataSupport的子类将会有save方法,调用即可保存数据到数据库:
Album album = new Album();album.setName("album");album.setPrice(10.99f);album.setCover(getCoverImageBytes());album.save();
查询数据
查询单条数据根据id:
Album album = DataSupport.find(Album.class, id);
条件查询:
//注意问号List<Album> albums = DataSupport.where("name=?", "fantasy").order("price").find(Album.class);
更新数据
查询到数据取得模型类的对象,调用set方法修改后调用save保存即可.
Album albumToUpdate = DataSupport.find(Album.class, 1);albumToUpdate.setPrice(20.99f); // raise the pricealbumToUpdate.save();
删除数据
和查询数据用法类似.
根据id删除单条数据:
DataSupport.delete(Song.class, id);
删除所有数据:
DataSupport.deleteAll(Song.class, "duration > ?" , "350");
异步操作
当操作的数据量过大时可能需要异步操作避免当前线程阻塞,litepal支持所有CRUD操作方法异步操作.(都有对应的async方法)
例如:
DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() { @Override public <T> void onFinish(List<T> t) { List<Song> allSongs = (List<Song>) t; }});
如果需要的话,调用listen方法添加该操作的监听器.
- Android SQLite轻量框架LitePal基本使用
- android轻量数据库SQLite的使用
- android SQLite数据库开源框架LitePal的使用详解
- Android之轻量数据库SQLite
- android轻量框架二__Activity生命周期
- android轻量框架__JAVA 线程
- android轻量框架_各种Dialog
- android 网络应用轻量框架
- Android轻量缓存框架--ASimpleCache
- Android轻量缓存框架--ASimpleCache
- Android轻量缓存框架--ASimpleCache
- Android轻量缓存框架--ASimpleCache
- Android开发 轻量缓存框架--ASimpleCache
- Android轻量缓存框架ASimpleCache
- 简述Android高效轻量网络框架
- Python轻量Web框架Flask使用
- Android数据库(SQLite)框架(1)——创建表和LitePal的基本用法
- 【Android 】Litepal 数据库框架使用
- 关于ff.getParentFile().mkdirs();
- Linux 把一个文件夹下的所有内容复制到另一个文件夹下面
- 永远的行思人
- UE(虚幻)4 蓝图可视化编程 04 结构体
- android7.0 apk下载完成后跳转到apk安装页面闪退的兼容处理
- Android SQLite轻量框架LitePal基本使用
- Django 教程
- Linux ZeroC Ice 环境配置
- 支付宝 网页授权 获取用户信息
- Android之activity四种启动方式
- day2:Android Wear开发---HelloWear
- 二叉搜索树的后序遍历序列
- 燕麦云何洋开讲丨知道了这些,你还会用共享充电宝吗?
- 使用AndroidStudio自定义Gradle插件