Android--LitePal

对象关系映射(ORM) :我们的编程语言使用的是面向对象语言,数据库用的是关系型数据库,将面 向对象语言和关系型数据库建立的一种映射关系成为对象关系映射。
LitePal:开源的Android数据库框架,采用了对象关系映射(ORM),并将常用的数 据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表 和增删改查德操作。 

配置LitePal

(1)编辑app/build.gradle,在dependencies中添加如下代码来声明开源库的引用:

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

也可以再LitePal项目主页上查看最新的版本号 https://github.com/LitePalFramework/LitePal
(2)配置litepal.xml,在main目录下新建assets文件夹,并在该文件夹中新建litepal.xml,代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<litepal>
    <dbname value="BookStore" ></dbname><!--数据库名字-->
    <version value="1"></version><!--数据库版本号-->
    <list><!--指定映射模型-->
    </list>
</litepal>

(3)配置LitePalApplication,修改AndroidMainfest.xml,在<application中添加如下代码来保证LitePal的所有功能都能正常工作:

android:name="org.litepal.LitePalApplication"

一、数据库

1.1创建数据库

(1)修改activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/create_database"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Create database" />

    <Button
        android:id="@+id/add_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add data" />

    <Button
        android:id="@+id/update_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Update data" />

    <Button
        android:id="@+id/delete_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Delete data" />

    <Button
        android:id="@+id/query_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Query data" />
</LinearLayout>

(2)在MainActivity.java中添加如下代码:

//6.5.3创建数据库
Button createDatabase = (Button)findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LitePal.getDatabase();
    }
});

1.2升级数据库(在2.1完成的基础上)

(1)新建一个Java Bean ,Category类:

public class Category {
    private int id;
    private String categoryName;
    private int categoryCode;

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

    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }

    public void setCategoryCode(int categoryCode) {
        this.categoryCode = categoryCode;
    }
}

(2)修改litepal.xml,将version改为2,并把Category添加到映射模型列表中:

<?xml version="1.0" encoding="utf-8" ?>
<litepal>
    <dbname value="BookStore" ></dbname><!--数据库名字-->
    <version value="2"></version><!--数据库版本号-->
    <list><!--指定映射模型-->
        <mapping class="com.example.litepaltest.Book"></mapping>
        <mapping class="com.example.litepaltest.Category"></mapping>
    </list>
</litepal>

1.3删除数据库

二、数据表

2.1建立数据表

(1)定义一个典型的Java Bean,Book类:

public class Book extends DataSupport {
    private int id;
    private String author;
    private double price;
    private int pages;
    private String name;
    private String 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;
    }

    public String getPress() {
        return press;
    }

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

(2)将Book类添加到映射模型列表中,修改litpal.xml的代码:

<list><!--指定映射模型-->
        <mapping class="com.example.litepaltest.Book"></mapping>
    </list>

2.2修改数据表

2.3删除数据表

三、记录

3.1添加数据

在MainActivity.java中添加如下代码:

//6.5.4添加数据
Button addData = (Button)findViewById(R.id.add_data);
addData.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(16.96);
        book.setPress("Unknow");
        book.save();
    }
});

3.2更新数据

在MainActivity.java中添加如下代码:
方法①:

//6.5.5更新数据
Button updateData = (Button)findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       	Book book = new Book();
        book.setName("The Lost Symbol");
        book.setAuthor("Dan Brown");
        book.setPages(510);
        book.setPrice(16.95);
        book.setPress("Unknow");
        book.save();
        book.setPrice(10.99);
        book.save();
    }
});

方法②:

//6.5.5更新数据
Button updateData = (Button)findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       Book book = new Book();
        book.setPrice(14.95);
        book.setPress("Anchor");
        book.updateAll("name=? and author=?",
                "The Lost Symbol", "Dan Brown");
    }
});

3.3删除数据

在MainActivity.java中添加如下代码:

//6.5.6删除数据
Button deleteData = (Button)findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DataSupport.deleteAll(Book.class, "price<?", "15");
    }
});

3.4查询数据

例 findAll()方法——查询某表中的所有数据:

//6.5.7查询数据
Button queryData = (Button)findViewById(R.id.query_data);
queryData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        List<Book> books = DataSupport.findAll(Book.class);
        for (Book book: books) {
            Log.d("MainActivity", "book name is " + book.getName());
            Log.d("MainActivity", "book author is " + book.getAuthor());
            Log.d("MainActivity", "book pages is " + book.getPages());
            Log.d("MainActivity", "book price is " + book.getPrice());
            Log.d("MainActivity", "book press is " + book.getPress());
        }
    }
});

其他常用的查询API:
查询第一条数据:Book firsBook = LitePal.findFirst(Book.class);
查询最后一条数据:Book lastBook = LitePal.findLast(Book.class);
查询指定列:select()
指定查询的约束条件:where() 
指定结果的排序方式:order() 
指定查询结果的数量:limit() 
指定查询结果的偏移量:offset()
例如:

 List<Book> books = LitePal.select("name","author","pages")
        .where("pages>?","400") 
        .order("pages") 
        .limit(10) 
        .offset(10) 
        .find(Book.class);

以上代码的所有运行结果都已经用sqlite3命令查看过。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值