LitePal使用步骤

来源:互联网 发布:同方软件股份有限公司 编辑:程序博客网 时间:2024/05/21 10:02
使用步骤 :
  1.     添加app/ buile.gradle/dependencies 闭包依赖关系
dependencies {
    compile fileTree(dir'libs'include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group'com.android.support'module'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.1'
    compile 'org.litepal.android:core:1.5.1'
    testCompile 'junit:junit:4.12'
}
  1. 添加app/src/ mian/      assets 目录   /litepal.xml 文件
<?xml version="1.0"encoding="utf-8"?>
<litepal>
    <!--指定数据库名-->
    <dbnamevalues="BookStore"></dbname>
    <!--指定数据库版本-->
    <versionvalues="1"></version>
    <!--指定所有的映射模型-->
    <list>
        <!--映射模型-->
        <mappingclass="com.example.sky.mysqlite.Book"></mapping>
    </list>
</litepal>

  1. 配置application
<application
   android:name="org.litepal.LitePalApplication"
</application>

     使LitePal所有功能正常工作
  1. 创建数据库

     创建Book=类对应数据库中Book表 类中每一字段对应表中每一列 对象关系映射
  
      并将Book类添加到映射模型列表中 修改litepa l代码
  
       CRUD(增删改查) 需要继承结构 且必须继承自DataSupport类
package com.example.sky.mysqlite;

import org.litepal.crud.DataSupport;

/**
* Created by sky on 2017/3/23.
*
* litepal 使用步骤:
* 1。 添加app/ buile.gradle/
* dependencies {
* compile 'org.litepal.android:core:1.5.1'
* } 依赖关系
*
* 2。添加 assets 文件夹 /slitepal.xml 文件
*/

  /*
  *
  * 创建Book=类对应数据库中Book表 类中每一字段对应表中每一列 对象关系映射
  *
  * 并将Book类添加到映射模型列表中 修改litepa l代码
  *
  * CRUD(增删改查) 需要继承结构 且必须继承自DataSupport类
  * */
public class Book extends DataSupport{
  private int id;
  private String author;
  private double price ;
  private int pages;

  public void setPages(int pages) {
  this.pages = pages;
  }

  public int getPages() {

  return pages;
  }

  private String name;

  public void setId(int id) {
  this.id = id;
  }

  public void setAuthor(String author) {
  this.author = author;
  }

  public void setPrice(double price) {
  this.price = price;
  }

  public void setName(String name) {
  this.name = name;
  }

  public int getId() {

  return id;
  }

  public String getAuthor() {
  return author;
  }

  public double getPrice() {
  return price;
  }

  public String getName() {
  return name;
  }
}

  1. CRUD增删改查



public class LitepalTest extends AppCompatActivity {
  private Button create_database;
  private Button create;
  private Button updata;
  private Button delete;
  private Button retrieve;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_litepal_test);
  create_database = (Button) findViewById(R.id.create_database);
  create = (Button) findViewById(R.id.Create);
  retrieve = (Button) findViewById(R.id.Retrieve);
  updata = (Button) findViewById(R.id.Update);
  delete = (Button) findViewById(R.id.Delete);
  //创建数据库
  create_database.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  //创建数据库
  LitePal.getDatabase();
  Toast.makeText(LitepalTest.this, "数据库创建", Toast.LENGTH_SHORT).show();
  }
  });
  create.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  Book book = new Book();
  book.setName("The Da Vinci Code");
  book.setAuthor("Dan Brown");
  book.setPages(454);
  book.setPrice(14.96);
  book.save();
  Toast.makeText(LitepalTest.this, "数据写入", Toast.LENGTH_SHORT).show();

  }
  });
  updata.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

  Book book = new Book();

  book.setName("The Lost Symboy");
  book.setAuthor("Dan Brown");
  book.setPages(510);
  book.setPrice(19.95);
  book.save();

  /*
  * 该方式只能对已存储对象进行操作
  *
  * 已存储对象 用model.isSaved()判断 两种情况返回TRUE
  * 1.已经调用model.save()方法去添加数据
  * 2.model对象是通过LitePal提供查询API查出来的(从数据库查到的对象,默认认为已经存储)
  *
  * */

// 限制性较大
// book.setPrice(20.00);
// book.save();

// 第二种: 轻巧方法

  Book book2 = new Book();

  book2.setPrice(14.95);

  /*
  * 当想把一个字段值更新成默认值时 不可用set方法
  * java中任何一种数据类型字段都有默认值但不同类型 默认值不同 new 时已经默认
  * 此时可用 setToDefault() 传入相应列名即可*/

// book2.setToDefault("pages");
// book2.updateAll();//所有书页数都为0 因为该方法中未指定约束条件

  //更新 名为 The Lost Symboy 并且 作者为Dan Brown 的数据项
  book2.updateAll("name=? and author=?", "The Lost Symboy", "Dan Brown");

  Toast.makeText(LitepalTest.this, "数据更新", Toast.LENGTH_SHORT).show();
  }
  });
  delete.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  /*
  * 参数 1. 指定删除那张表 后面 用于指定约束条件
  * deleteAll()不指定参数 默认删除表中所有数据
  * */
  //删除Book表中价格低于15 的书
  DataSupport.deleteAll(Book.class, "price<?", "15");
  Toast.makeText(LitepalTest.this, "数据删除", Toast.LENGTH_SHORT).show();

  }
  });
  retrieve.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  /*
  *findAll()返回一Book类型的List集合
  * */

  List<Book> books = DataSupport.findAll(Book.class);
  for (Book book : books) {
  Log.d("LitepalTest", "book name is" + book.getName());
  Log.d("LitepalTest", "book author is" + book.getAuthor());
  Log.d("LitepalTest", "book pages is" + book.getPages());
  Log.d("LitepalTest", "book price is" + book.getPrice());
  }
  Toast.makeText(LitepalTest.this, "数据输出", Toast.LENGTH_SHORT).show();
  }
  });
  }
}