LitePal学习

Android数据库的git库LitePal学习

学习之前配置

compile 'org.litepal.android:core:2.0.0'
  • 如果是android studio,以project打开项目,在src->main下新建文件夹命名assets,再在内部新建litepal.xml文件
  • 具体结构看图(这里一定不能错)
    image
  • 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()表示从哪一项开始查询

猜你喜欢

转载自blog.csdn.net/asffghfgfghfg1556/article/details/80633941