Android开发初级00_1如何在安卓开发中使用数据库之量框架LitePal
2017-08-13 23:59
465 查看
Android SQLite轻量框架LitePal
简介
LitePal是一个开源的安卓库,允许程序员极其简单的操作SQLite数据库。甚至不用写一句SQL语句就能完成大多数SQLite数据库操作,包括创建去或者更新表,CRUD操作,聚合操作等等。特点
使用对象关系映射模型(ORM)。基本上0配置,仅仅需要一个配置文件。
自动与表保持联动(创建、修改或者删除)。
多数据库支持。
对SQL语句进行封装。
简洁的查询语句。
同时支持原生API的使用。
一,配置
1. 导入库
下载jar文件点击进入选择合适的版本进行下载或者
直接在gradle中引入依赖:
JAVA dependencies { compile 'org.litepal.android:core:1.5.1' }
2. 配置litepal.xml文件
创建assert文件夹(与res同级),在其中创建litepal.xml文件,在里面如下配置: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>
3. 配置LitePalApplication
为了避免每次使用都需要传递Context变量,可以直接在AndroidManifest.xml文件中使用LitePalApplication.XML <manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application> </manifest>
如果有自定义的Application,让它继承至LitePalApplication即可.然后需要Application的onCreate方法中初始化:
JAVA public class MyOwnApplication extends AnotherApplication { @Override public void onCreate() { super.onCreate(); LitePal.initialize(this); } ... }
二,使用
1. 创建表
定义模型类,假如创建了一个Album类:JAVA 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文件中配置:
XML <list> <mapping class="org.litepal.litepalsample.model.Album" /> </list>
之后在你下次操作数据库时该表自动创建.你就假设该表已经存在,当你打开,插入数据等操作时litepal检测到表不存在将会自动创建.
2. 更新表
直接对模型类进行修改:JAVA 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文件中更新版本号:
XML <!-- 假设之前版本号为1 --> <version value="2" ></version>
表将会在下次对数据库进行操作时更新,添加一个releaseDate字段,移除price字段.
3. 保存数据
继承自DataSupport的子类将会有save方法,调用即可保存数据到数据库:JAVA Album album = new Album(); album.setName("album"); album.setPrice(10.99f); album.setCover(getCoverImageBytes()); album.save();
4. 查询数据
查询单条数据根据id:JAVA Album album = DataSupport.find(Album.class, id);
条件查询:
JAVA //注意问号 List<Album> albums = DataSupport.where("name=?", "fantasy").order("price").find(Album.class);
5. 更新数据
查询到数据取得模型类的对象,调用set方法修改后调用save保存即可.JAVA Album albumToUpdate = DataSupport.find(Album.class, 1); albumToUpdate.setPrice(20.99f); // raise the price albumToUpdate.save();
6. 删除数据
和查询数据用法类似.根据id删除单条数据:
Java DataSupport.delete(Song.class, id);
删除所有数据:
JAVA DataSupport.deleteAll(Song.class, "duration > ?" , "350");
7. 异步操作
当操作的数据量过大时可能需要异步操作避免当前线程阻塞,litepal支持所有CRUD操作方法异步操作.(都有对应的async方法)例如:
JAVA DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() { @Override public <T> void onFinish(List<T> t) { List<Song> allSongs = (List<Song>) t; } });
如果需要的话,调用listen方法添加该操作的监听器.
以上还是有不少是借鉴各位大神的网志作为参考!
这一次可要我晕了好久,总是丢三落四的。
总算是把这次的网志给补上了!
还是和往常一样,给大家推荐一首歌!
Clsr (Aash Mehta Flip)
最后还是祝大家酷酷的!不知道会不会有人赞我。。。罒ω罒
相关文章推荐
- Android开发——使用LitePal开源数据库框架
- 使用android快速开发框架afinal的FinalDb操作android数据库
- PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
- 解决:Android使用自带sqlite开发时,apk中创建的数据库外部的进程是没有权限去读/写的,而且无法如何读取指定目录下的db文件
- 【React Native 安卓开发】----侧边栏的实现DrawerLayoutAndroid以及第三方框架react-native-side-menu的使用【第六篇】
- Android数据库LitePal框架学习笔记(1)---数据库的adb操作以及LitePal使用入门
- 使用android快速开发框架afinal的FinalDb操作android数据库
- Android开源数据库框架-LitePal的使用
- Android开源数据库框架-LitePal的使用
- 如何使用ZBLibrary-Android快速开发框架
- 使用Mina框架开发 QQ Android 客户端(1) Mina初级教程
- Android开源数据库框架-LitePal的使用
- 使用android快速开发框架afinal的FinalDb操作android数据库
- 如何使用三层框架开发 JDBC 连接 Mysql 数据库
- android数据库框架LitePal的简单使用
- 使用android快速开发框架afinal的FinalDb操作android数据库
- 安卓:如何在开发中使用预先准备好的数据库
- 使用android快速开发框架afinal的FinalDb操作android数据库
- Android数据库框架--litepal的使用
- Android-框架使用之-懒惰开发-如何提升开发效率