android数据库litepal使用记录

作者: ccccccal | 来源:发表于2017-10-17 14:37 被阅读631次

简介:

litepal是郭霖的一款开源的android数据库框架,采用关系映射(ORM)的模式,这是github
地址
,最新版本已经更新到1.6,支持eclipse,gridle使用如下:

 compile 'org.litepal.android:core:1.6.0'

配置:

创建assets目录,新建litepal.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!--数据库名字 -->
    <dbname value="demo" />

    <!--数据库版本 -->
    <version value="1" />

    <!--数据库实体类,用于映射-->
    <list>
            <mapping class="com.test.model.Reader" />
            <mapping class="com.test.model.Magazine" />
    </list>
 
</litepal>

litepal初始化有两种方式:

1.将你清单文件的Application换成LitePalApplication

<manifest>
    <application
        android:name="org.litepal.LitePalApplication"
        ...
    >
        ...
    </application>
</manifest>

2.将你的Application继承自Application,然后在onCreat(),进行litepal的初始化

public class MyOwnApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
    ...
}

使用litepal

创建实体类

litepal需要用于映射的实体类需要继承DataSupport,并生成get和set方法,关于这两个方法,推荐一个库:
lombok,gridle使用添加:

compile 'org.projectlombok:lombok:1.16.18'

添加之后你的get和set方法只用在类名上面添加注解@Data就可以了,如下

@Data
public class Man{  

   @Column(unique = true, defaultValue = "unknown")
    private int age;  

    private String name;  
}

实体类支持注解约束:

@Column(unique = true)                //是否唯一
@Column(defaultValue = "unknown")    //指定字段默认值
@Column(nullable = false)            //是否可以为空
@Column(ignore = true)                //是否可以忽略

修改litepal.xml

当你添加表或修改表结构,都要修改litepal.xml,首先版本号要+1,如果添加表,还要添加

 <list>  
        <mapping class="com.example.alguojian.bean.Man"></mapping>  
 </list>  

添加数据

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.指定id:

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

2.条件更新:

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

3.多个条件用and连接

Album album= new Album();  
album.setTitle("第3次更新");  
album.updateAll("title = ? and age> ?", "第2次更新", "12");

4.更新全部数据,将表所有数据名字修改:

Man values = new Man();  
values.put("Name", "小化工");  
DataSupport.updateAll(Man.class, values);

5.异步更新数据

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.指定ID

DataSupport.delete(Man.class, id);

2.条件删除,多个条件用and连接

DataSupport.deleteAll(Man.class, "age > ?" , "15");

3.删除全表数据

DataSupport.deleteAll(Man.class);

查询数据

1.查询第一条以及最后一条

News firstNews = DataSupport.findFirst(News.class);

News lastNews = DataSupport.findLast(News.class);

2.指定id

Song song = DataSupport.find(Song.class, id);

//指定多个id如下
//方式一:
List<News> newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);

//方式二:
long[] ids = new long[] { 1, 3, 5, 7 };  
List<News> newsList = DataSupport.findAll(News.class, ids);

3.查询所有

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

4.条件查询

查询 Man表 中 年龄大于12 的 第5到20条 数据,以插入时间倒序 排序方式呈现,只取 “名字”和“性别”和“身高” 三列内容。

List<Man> list = DataSupport.select("name", "sex","height")//需要的条目
                                 .where("age> ?", "12")//条件
                                 .order("inputTime desc")//倒序字段
                                 .offset(5)//开始查询位置
                                 .limit(15)//数据长度
                                 .find(Man.class);//查询表

5.异步查询,用于代替findAll

DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() {
    @Override
    public <T> void onFinish(List<T> t) {
        List<Song> allSongs = (List<Song>) t;
    }
});

删除数据库

LitePal.deleteDatabase("数据库名");

完结

关于litepal更多用法可以查看源码
github地址:https://github.com/LitePalFramework/LitePal

相关文章

  • 2018-06-23 LitePal

    Android数据库框架 - LitePal LitePal是一款开源的Android数据库框架,它采用了对象关系...

  • Android数据库框架 - LitePal

    Android数据库框架 - LitePal学习笔记

  • android数据库litepal使用记录

    简介: litepal是郭霖的一款开源的android数据库框架,采用关系映射(ORM)的模式,这是github地...

  • LitePal使用入门

    LitePal简介 LitePal是Android中比较轻便的开源数据库框架,只需要简单的配置就可以使用,避免了自...

  • LitePal使用入门

    LitePal简介 LitePal是Android中比较轻便的开源数据库框架,只需要简单的配置就可以使用,避免了自...

  • LitePal学习(三)——增删改查

    前言 本文参考Android数据库高手秘籍(五)——LitePal的存储操作官网 下面讲讲litepal数据库的增...

  • 常用的Android开源库

    常用的Android开源库 1.LitePal LitePal是一款开源的Android数据库框架,采用了对象关系...

  • LitePal介绍

    LitePal LitePal是GitHub上一款开源的Android数据库框架。 采用了对象映射关系(ORM)的...

  • 数据库LitePal

    1.简介litepal是android开源数据库框架,采用对象关系映射的模式,不使用SQL语句就可完成数据库的操作...

  • 数据库框架LitePal使用指南

    数据库框架LitePal使用指南 这里只是对于使用 LitePal框架的常用API总结笔记 基础配置 使用注意 数...

网友评论

    本文标题:android数据库litepal使用记录

    本文链接:https://www.haomeiwen.com/subject/cktduxtx.html