前言:之前使用 Android 内置的数据库,感觉一大堆 SQL 语句,一不小心就错了,很难受,学习了这个 LItePal 的开源数据库,瞬间觉得 Android 内置的数据库简直是垃圾般的存在 LitePal GitHub 首页:https://github.com/LitePalFramework/LitePal
切换 project 模式,展开 APP 的文件夹,找到 build.gradle 文件,去里面添加依赖,这里我用的是最新版本,可以在 LitePal 的 Github 官网上找到最新的版本
在 main 文件夹中新建一个 asstes 文件夹,之后,创建 LitePal.xml,复制 LitePal 上的 GItHub 给出的代码,这里我就直接写了,其中,dbname 代表数据库的名称,version 代表版本号,list 标签之下有表(专业术语为映射模型类),这里之后会提及
此外,我们还需要在 AndroidMainfest 文件中添加一行代码 android:name="org.litepal.LitePalApplication"
3. 创建一个 Java Bean 类
这里创建了一个书的 bean 类,有着三个成员变量,之后,使用 alt+insert,选择 getter and setter,添加 get 与 set 方法
4. 在 LItePal.xml 文件中 list 标签下配置表(映射模型类)
记得包名要写完整
使用步骤:
在相关 activity 的 java 文件直接使用 LitePal 的 getDatabase 方法创建数据库,即是添加下面的代码即可,写在 onClick 事件中即可,这里就不放截图
LitePal.getDatabase();
升级数据库,直接在 Bean 的 java 文件中添加新的成员变量及其的 get 与 set 方法即可,升级数据库的代码还是使用上面的那一行代码
举个例子,例如上述,我们想要添加一个出版社的列,我们只需要在 Book 里面创建一个成员变量,及 get 与 set 方法,之后,去 LitePal.xml 文件中,将 version 的版本加 1,也就是改为 2 即可,其他的都不需要更改
例如,我们想要再加一张表,也是类似的操作,创建一个 Bean 类,之后,在 LitePal.xml 文件中使用 mapping 标签,同时,将版本号加一,也就是改为 2 即可,其他的也是不需要改变
修改模型类(也就是 Book),使其继承 DataSupport
之后,我们只需要新建一个对象,调用其 set 方法,为其里面的成员变量赋值,之后,调用 save 方法,就是成功地往数据库中添加了数据
3. 修改(更新)数据
更新的操作其实很简单,使用 udateAll 方法即可,例如,我们要将上面书名为 The Last 的作者改为 John,价格改成 16
updateAll 里面写了约束条件,也就是书名为 The Last 的那一条数据,修改,如果 updateAll 里面无参数,就是将表里面的数据的作者与价格更改为 John 和 16
调用 DataSupport 的 deleteAll 方法,与上面的 updateAll 类似,参数里填约束条件,如果不写,就是删除整张表
5. 查找数据
- DataSupport.deleteAll(Book.class,"naem is ?","The Last");//删除名字为The Last的数据
- DataSupport.deleteAll(Book.class,"price < ?","16");//删除价格低于16的数据
查找方法调用的 DataSupport 的 findAll 方法即可,下面给出示例代码
select 指定查询列,where 查找出符合约束条件的数据,order 将查询结果排序,limit 限制查询数据数目
- List<Book> books = DataSupport.findAll(Book.class);//查找Book这张表的全部数据,返回的是一个List
- List<Book> books1 = DataSupport.select("name","price").find(Book.class);//指定查询Book这张表中的name与price两列的数据,返回的也是一个List
- List<Book> books2 = DataSupport.where("price > ?","16").find(Book.class);//指定在Book这张表查找符合价格大于16(约束条件)的数据,返回的是一个List
- List<Book> books4 = DataSupport.order("price desc").find(Book.class);//将查询结果按照价格从高到低排序(desc 降序),不写或者asc则是升序
- List<Book> books5 = DataSupport.limit(3).find(Book.class);//查询Book表中的前三条数据
- 值得一提的是,可以使用findBySQL方法进行原生的查询,也就是之前使用内置数据库的方法,返回的是一个Cursor对象,这里我就不使用了
来源: https://www.cnblogs.com/kexing/p/8127146.html