Android数据库的git库LitePal学习
学习之前配置
compile 'org.litepal.android:core:2.0.0'
如果是android studio,以project打开项目,在src->main下新建文件夹命名assets,再在内部新建litepal.xml文件
具体结构看图(这里一定不能错)
litepal.xml文件的编写
<litepal >
<dbname value ="Bookstore" > </dbname >
<version value ="2" > </version >
<list >
</list >
</litepal >
前两个结点就是数据库的名字和版本
后面的list结点表示的是类映射,后面讲
创建和更新
官方说的什么对象关系映射,其实就是数据库表单与类的映射
每个表单都有个相对应的类
比如说我们现在要建一个Book的表
那么首先的工作是先建一个Book类
public class Book{
private int id;
private String author;
private double price;
private int pages;
private String name;
private String press;
public String getPress () {
return press;
}
public void setPress (String press) {
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;
}
}
全是setget方法
接着在刚才的litepal.xml文件里面注册
<litepal >
<dbname value ="Bookstore" > </dbname >
<version value ="2" > </version >
<list >
<mapping class ="com.example.learnretrofit.LearnDataSave.Book" > </mapping >
</list >
</litepal >
注意这里要写上类的全路径
然后在适合的地方,比如说一个按钮监听下调用一个方法就会创建好Book表了
litePalCreat_Bt.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View v) {
LitePal.getDatabase();
}
});
当我们需要更新我们的数据库时,只需要将我们的Book类修改,然后将LitePal.xml文件中的版本号升高一下,再去调用一个LitePal.getDatabase();就好了
若是更新的数据库新增加了表单类,那么还需要在litepal.xml文件的list结点下增加新类的注册
增删改查
想使用增删改查我们就必须让我们的表单类继承DataSupport这个类,就简单的继承就行,不需要去重写方法之类的
增
Book book = new Book()
book.setName ("圣墟" )
book.setPages (255 )
book.setPrice (52.22 )
book.setPress ("不知道" )
book.setAuthor ("辰东" )
if(book.save ()){
Log.d ("==============" , "onClick: 圣墟保存成功" )
}
这样子就好,如果想一次性添加多条数据,就必须每一次都必须新建Book类,不然下次的添加他会认为成修改,也就是说覆盖刚才添加的那个
改
Book book = new Book()
book.setPress ("修改之后的" )
book.setPages (320 )
book.setToDefault ("price" )
book.updateAll ("name = ?" ,"圣墟" )
先指定修改项的修改之后的内容,或者说调用这个book.setToDefault(“price”);方法将某个参数设置成默认值,然后最后调用updataAll设置约束条件(约束条件也可以不设置)并更新
删
DataSupport.deleteAll (Book.class ,"price < ?" ,"15" )
直接一句话,指定约束条件,删除,不指定代表全部删除
查
List<Book> books = DataSupport
.select ("name" ,"author" )
.where ("pages > ?" ,"50" )
.order ("price desc" )
.limit (10 )
.offset (10 )
.find (Book.class )
或者
List<Book> books = DataSupport.findAll (Book.class )
前者是指定多个约束条件的,或者是直接一股脑查询,约束条件可以选择性指定,查询到的数据将会通过List返回
下面我说说这几个约束条件的含义
.select()表示查询哪几列数据
where()约束查询的某一项条件
order()指定返回的结果中某一项的排序方式,desc 表示从高到低,不写或者asc表示从低到高
limit()表示查询多少项,这个数字表示从全部数据中查询多少项,而不表示查询的结果有多少项
offset()表示从哪一项开始查询