Android 数据库
ORM:对象关系映射
框架
大纲
- LitePal 环境配置
- 核心类
- 创建和升级数据库
- CRUD 操作
#LitePal 环境配置
- 编辑 app/build.gradle文件
dependencies {
compile 'org.litepal.android:core:1.4.1'
}
最新版本号可以去LitePal项目主页查看。
- 配置 litepal.xml 文件
右击 app/src/main 目录 -> New -> Directory,创建一个 assets 目录,然后在 assets 目录下创建 litepal.xml 文件。
<?xml version="1.0" encoding="utf-8" ?>
<litepal>
<!--数据库名-->
<dbname Value="Library"></dbname>
<!--数据库版本号-->
<version value="1"></version>
<!--模型映射-->
<list>
<mapping class="类路径"></mapping>
</list>
</litepal>
- 配置AndroidMainfest.xml
...
<application
android:name="org.litepal.LitePalApplication"
...
#核心类
LitePal.getDatabase():创建 / 更新数据库
DataSupport:增删改查类,私有删除 查询方法
#创建和升级数据库
LitePal.getDatabase(); 创建数据库/更新数据库
第一次调用时创建数据库
litepal.xml中version值变大时更新数据库
#CRUD 操作
DataSupport 类:JavaBean继承该类得到存储
save
更新updateAll
方法
save
Book book = new Book();
book.setName("Head 设计模式");
book.setAuthor("匿名");
book.setPrice(78);
// LitePal 好像不支持关联映射,这里只好存 id,取的时候再根据 id 去取Category
book.setCategory_id(category.getId());
book.save();
updateAll
Book book = new Book();
book.setName("代码简洁之道");
// 这个方法用了String... 可变参数
book.updateAll("name = ?", "Head 设计模式");
deleteAll
删除 / 查询是 DataSupport 类的私有方法。
// String...
DataSupport.deleteAll(Book.class, "name = ? or name = ?", "Head 设计模式", "代码简洁之道");
find
- findFirst:末尾方法,返回单个
- findLast:末尾方法,返回单个
List<Category> categorys = DataSupport
.select("id", "name")
.where("id = ?", book.getCategory_id() + "")
.order("id")
.limit(0)
.offset(5)
.find(Category.class);
#结尾
- LitePal 在更新数据库的时候会保留数据库数据
- LitePal 貌似不能关联映射,包含其他对象时需要存id取id。
网友评论