LitePal使用概要

已经很久没用数据库了,litepal也更新到3.0了,不过使用方法还没什么变化,总体来说还是非常方便的。

安装步骤如下:

  1. 添加依赖

    build.gradle 中添加依赖 implementation 'org.litepal.android:java:3.0.0'

  2. 配置 litepal.xml

    在main目录下创建assets资源文件夹,并创建litepal.xml文件

    ```xml <?xml version="1.0" encoding="utf-8"?>

    <!-- 数据库版本,每次修改映射文件后+1 -->
    <version value="1" />
    
    <!--
        添加映射文件如下所示:
        <list>
            <mapping class="com.test.model.Reader" />
            <mapping class="com.test.model.Magazine" />
        </list>
    -->
    <list>
    </list>
    
    <!--
        定义数据库文件存储位置,默认"internal",可选"external"
        <storage value="external" />
    -->
    

    ```

  3. 全局加载

在Application的create方法中添加 LitePal.initialize(this); 以初始化类库。

Note:

  1. 尽早调用
  2. 避免使用Activity和Service的实例进行传参,以防内存泄漏
  3. 记得在 AndroidManifest.xml 中加上name属性
  4. 如果你不需要创建Application,可以直接在 AndroidManifest.xml 的name属性上添加org.litepal.LitePalApplication

至此,安装完成。

使用步骤如下:

  1. 创建表

  2. 定义模型

    ```java public class Album extends LitePalSupport {

      @Column(unique = true, defaultValue = "unknown")
      private String name;
    
      private float price;
    
      private byte[] cover;
    
      private List<Song> songs = new ArrayList<Song>();
    
      // generated getters and setters.
      ...
    

    } ```

    ```java public class Song extends LitePalSupport {

      @Column(nullable = false)
      private String name;
    
      private int duration;
    
      @Column(ignore = true)
      private String uselessField;
    
      private Album album;
    
      // generated getters and setters.
      ...
    

    } ```

  3. 添加模型到 litepal.xml 文件的映射列表

    xml <list> <mapping class="org.litepal.litepalsample.model.Album" /> <mapping class="org.litepal.litepalsample.model.Song" /> </list>

  4. 这就创建好了,下次调用时自动创建,如:SQLiteDatabase db = LitePal.getDatabase();

  5. 更新表

  6. 在bean中随便改

  7. 然后去litepal中,把版本号+1
  8. 在下次调用时自动更新
  9. 无法处理的情况:(如果碰到这种情况,只有重新安装)

    • 添加一个字段的注解为 unique = true
    • 变更一个字段的注解为 unique = true
    • 变更一个字段的注解为 nullable = false
  10. 添加数据

从LitePalSupport继承的每个模型都可以使用save()方法来添加数据

java Album album = new Album(); album.setName("album"); album.setPrice(10.99f); album.setCover(getCoverImageBytes()); album.save(); Song song1 = new Song(); song1.setName("song1"); song1.setDuration(320); song1.setAlbum(album); song1.save(); Song song2 = new Song(); song2.setName("song2"); song2.setDuration(356); song2.setAlbum(album); song2.save();

  1. 更新数据

  2. 最简单的方法是使用 save() 方法更新 find() 找到的记录。

    java Album albumToUpdate = LitePal.find(Album.class, 1); albumToUpdate.setPrice(20.99f); // raise the price albumToUpdate.save();

  3. 使用 update() and updateAll() 方法

    java Album albumToUpdate = new Album(); albumToUpdate.setPrice(20.99f); // raise the price albumToUpdate.update(id);

  4. 条件更新

    java Album albumToUpdate = new Album(); albumToUpdate.setPrice(20.99f); // raise the price albumToUpdate.updateAll("name = ?", "album");

  5. 删除数据

  6. 根据id删除

    java LitePal.delete(Song.class, id);

  7. 条件删除

    java LitePal.deleteAll(Song.class, "duration > ?" , "350");

  8. 查询数据

  9. 根据id查找

    java Song song = LitePal.find(Song.class, id);

  10. 全部查找

    java List<Song> allSongs = LitePal.findAll(Song.class);

  11. 条件查找

    java List<Song> songs = LitePal.where("name like ? and duration < ?", "song%", "200").order("duration").find(Song.class);

  12. 异步操作

默认情况下,数据库操作都在主线程上,如果时间过长,可以使用异步操作:

```java // 异步查找 LitePal.findAllAsync(Song.class).listen(new FindMultiCallback() { @Override public void onFinish(List allSongs) {

   }

});

// 异步存储 Album album = new Album(); album.setName("album"); album.setPrice(10.99f); album.setCover(getCoverImageBytes()); album.saveAsync().listen(new SaveCallback() { @Override public void onFinish(boolean success) {

   }

}); ```

  1. 多表操作

暂时用不到,可到官网查看

  1. 创建和升级监听

暂时用不到,可到官网查看

source code from here: https://github.com/LitePalFramework/LitePal

About This Page

Made with bootstrap and jquery by TaoYuan.

Contact Me

Click! If you are interested