LitePal的使用

LitePal 是一个开源的Android数据库框架,采用ORM的模式(将面向对象的语言和面向关系的数据库之间建立的一种映射关系)。
LitePal的使用文档地址是:https://github.com/LitePalFramework/LitePal
一:配置LitePal
1.在build.gradle中加入LitePal的引用:即(compile ‘org.litepal.android:core:1.5.1’)

 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.2.0'
    testCompile 'junit:junit:4.12'
   compile 'org.litepal.android:core:1.5.1'
   }

注意加入了加黑部分,1.5.1是版本号,最新的版本号可以在LitePal的主页上看。
2.配置litepal.xml文件。
在src下新建文件夹,命名为assets(这个目录防止资源文件,不会自动生成id,也不会自动占用空间),并创建一个litepal.xml文件,内容为:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
   <!--数据库名   -->
    <dbname value="BookStore" />
       <!--数据库版本号   -->
    <version value="2" />
    <!--数据库中的对象的映射类型 -->
    <list>
     </list>
</litepal>

3.在AndroidManifest.xml文件中稍作修改:(加入 android:name=”org.litepal.LitePalApplication

<application
        android:name="org.litepal.LitePalApplication
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
       ...


     </application>

这样,LitePal就配置好了可以使用了。

二 LitePal创建数据库
1.首先创建一个Book类,一定要继承DataSupport类:

public class Book extends DataSupport{

    private int id;
    private String name;
    private String author;
    private double price;
    private int page;
    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    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;
    }
}

2.将Book类添加到映射模型列表中,修改litepal.xml如下:

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

    <dbname value="BookStore" />

    <version value="1" />

       <list>
        <mapping class="com.skylight.litepaltest.Book"/>
         </list>

 </litepal>

3.数据库的创建只需调用一句代码即可:

LitePal.getDatabase();

如果想要修改数据表,或添加表,直接在定义的类中修改,改好后把版本号添加1即可:
如:把Book表添加一个属性press,

public class Book extends DataSupport{

    private int id;
    private String name;
    private String author;
    private double price;
    private int page;

    private String press;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    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 String getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }
}

然后修改版本号:

 <version value="2" />

三 LitePal添加数据
直接给对象赋值,然后调用.save()方法。
如:

                Book book=new Book();
                book.setName("The Da Vinci Code");
                book.setAuthor("Dan Brown");
                book.setPage(454);
                book.setPrice(16.96);
                book.save();

这样即向数据库中添加了一条数据
四.LitePal更新数据
法一:

                Book book1=new Book();
                book1.setName("The Lost Symbol");
                book1.setAuthor("Dan Brown");
                book1.setPage(510);
                book1.setPrice(19.95);
                book1.setPress("Unknow");
                book1.save();
                book1.setPrice(10.99);
                book1.save();

法二:

                Book book2=new Book();
                book2.setPrice(14.95);
                book2.setPress("Anchor");
                book2.updateAll("name = ? and author = ?","The Lost Symbol","Dan Brown");

法三,把数据更新为默认值:

Book book=new Book();
book.setToDefault("page");
book.updateAll();

这样即把所有书的页数都更新为0。
五 LitePal删除数据

DataSupport.deleteAll(Book.class,"price < ?","15");

六 LitePal查询数据

List<Book> books=DataSupport.findAll(Book.class);
for(Book book:books){
Log.i(book.getName()+"**"+book.getAuthor()+"**"+book.getPrice()+"**"+book.getPage());
}

其他查询语句:
1.查询第一条或最后一条数据:

//查询第一条数据
Book book=DataSupport.findFirst(Book.class);
//查询最后一条数据
Book book1=DataSupport.findLast(Book.class);

2.连缀查询定制更多功能的查询

//select()方法指定查询,如:仅查询书名和作者这两列
List<Book> books=DataSupport.select("name","author").find(Book.class);

//where()方法指定查询条件,如:查询页数小于400的
List<Book> books1=DataSupport.where("page < ?","400").find(Book.class);

//order()方法指定排序的结果,默认asc 升序排列
List<Book> books2=DataSupport.order("price desc").find(Book.class);

//limit()方法指定查询结果的数量,如:只查表中的前3条数据
List<Book> books3=DataSupport.limit(3).find(Book.class);

//offset()方法指定查询结果的偏移量,如查询表中的第2,34,条数据
List<Book> books4=DataSupport.limit(3).offset(1).find(Book.class);

//任意组合的连缀
List<Book> books5=DataSupport.select("name","author","page")
.where("page > ?","400")
.order("page desc")
.limit(10)
.offset(10)
.find(Book.class);

当然,LitePal还支持使用原生的SQL来进行查询,调用DataSupport.findBySQL()方法。
以上即介绍了LitePal的简单用法,相比较SQLite数据库,简化了代码的书写,很好用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值