Andorid开发 | 使用LitePal操作数据库
总结于 郭霖大神 《第一行代码》中LitePal章节
LitePal是什么?
LitePal 是一个开源的Android数据库框架,采用对象关系映射(ORM)的模式,并将常用的数据库操作(CRUD)进行封装。
那么ORM又是什么?我们的编程语言是面向对象编程语言,使用的数据库是关系型数据库。那么将面向对象语言与面向关系的数据库之间建立一种映射关系,这就是对象关系映射
使用前配置
添加LitePal依赖 在 build.gradle中 添加
1
implementation 'org.litepal.android:core:1.3.2'
创建assets目录,将工程目录切换到 Project下,app-src-main-右击 新建一个assets目录,在assets目录下 新建一个litepal.xml文件 编辑litepal.xml中的内容
1
2
3
4
5
6
7
8
9
10
11<litepal>
<!-- 数据库名-->
<dbname value="Bookstore"></dbname>
<!-- 数据库版本号-->
<version value="2"></version>
<!-- 表对应的表名-->
<list>
<mapping class="com.littlestone.litepalpractice.Book"></mapping>
<mapping class="com.littlestone.litepalpractice.Category"></mapping>
</list>
</litepal>修改项目的Application,(定死的,一定要这么写)
1
android:name="org.litepal.LitePalApplication"
创建数据库
定义一个Book类,采用Java Bean 表述,(这里继承自DataSupport,是为了在增加数据的时候使用的,如果只是创建数据库,可以不用继承)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67public class Book extends DataSupport {
private int id;
private String author;
private double price;
private int pages;
private String name;//书名
private String press;//出版商
public Book() {
}
public Book(int id, String author, double price, int pages, String name, String press) {
this.id = id;
this.author = author;
this.price = price;
this.pages = pages;
this.name = name;
this.press = press;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}将类名(完整的包名)加入到litepal中的list 中
1
2
3<list>
<mapping class="com.littlestone.litepalpractice.Book"></mapping>
</list>在MainActivity中,调用Connector.getDataBase()
1
Connector.getDatabase();
增
创建一个Book类对象
将Book类继承自DataSupport
同上
调用对象.save(),.save是DataSupport的
全部代码
1
2
3
4
5
6
7Book book = new Book();
book.setName("第一行代码");
book.setAuthor("白文磊");
book.setPages(454);
book.setPrice(16.96);
book.setPress("Unknow");
book.save();
删
调用DataSupport,deleteAll (第一个参数:类名.class,第二个参数 where语句,第三个参数 第二个参数中占位符?对应的值)
1
DataSupport.deleteAll(Book.class, "price<?", "20");
改
创建要修改后的数据 对象
调用对象.updateAll(第一个参数:where,第二个参数where中?占位符对应的)
全部代码
1
2
3
4Book book = new Book();
book.setPrice(100);
book.setPress("西北大学");
book.updateAll("name=? and author=?", "第一行代码", "白文磊");
查
查找的API较多,返回的是List<>类型,就可以进行遍历了
DataSupport.findAll(Book.class)
DataSupport.findFirst(Book.class)
DataSupport.findLast(Book.class)
DataSupport.select(“列名”).find(Book.class)
1
DataSupport.select("name","author").find(Book.class);
DataSupport.where(第一个参数:”pages>?”,占位符对应的值)
1
DataSupport.where("pages>?","100").find(Book.class);
DataSupport.limit ().find() 查找前几行的数据