1. 程式人生 > >【Android開發】【資料庫】LitePal 資料庫的使用

【Android開發】【資料庫】LitePal 資料庫的使用

一,導包

dependencies {
    ......
    // LitePal的包
    compile 'org.litepal.android:core:1.3.1'
    ......
}

二,建立bean類

public class Person extends DataSupport {

    private int id;
    private String name;
    private int age;

    public Person(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    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 getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

三,配置litepal.xml檔案

在assets資料夾下建立litepal.xml檔案。

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="demo"></dbname>
    <version value="1"></version>
    <list>
        <mapping class="com.example.administrator.litepaldemo.bean.Person"></mapping>
    </list>
</litepal>

“dbname ” 標籤, 是資料庫的名稱,自定義。
“mapping” 標籤,填寫的是需要進行資料庫操作的bean類,要寫完整的類名。
如果修改bean類的資料結構,只需要修改此處的資料庫版本號即可。

四,配置Application類

讓自己的Application繼承自LitePalApplication;
如果無法實現可以不繼承,但是要在Application中新增:

//初始化LitePal資料庫
LitePalApplication.initialize(this);

五,Insert

1, 插入一條資料

 Person person = new Person(4, "Cery", 18);
 person.save(); // 返回值:是否插入成功
  1. 同時插入多條
List<News> newsList;  
...  
DataSupport.saveAll(newsList);

六,Delete

1, 清空資料庫

DataSupport.deleteAll(News.class);  

2,根據ID刪除某個一條

DataSupport.delete(News.class, 2);

3, 通過where語句來批量刪除資料

DataSupport.deleteAll(News.class, "title = ? and commentcount = ?", "今日iPhone6釋出", "0");  

七,Update

1, 把news表中id為2的記錄的標題改成“今日iPhone6釋出”

ContentValues values = new ContentValues();  
values.put("title", "今日iPhone6釋出");  
DataSupport.update(News.class, values, 2);  

2,把news表中標題為“今日iPhone6釋出”的所有新聞的標題改成“今日iPhone6 Plus釋出”

ContentValues values = new ContentValues();  
values.put("title", "今日iPhone6 Plus釋出");  
DataSupport.updateAll(News.class, values, "title = ?", "今日iPhone6釋出");  

3,把news表中所有新聞的標題都改成“今日iPhone6釋出”

ContentValues values = new ContentValues();  
values.put("title", "今日iPhone6 Plus釋出");  
DataSupport.updateAll(News.class, values); 

八,Search

//查詢第一個
News firstNews = DataSupport.findFirst(News.class);  
//查詢最後一個
News lastNews = DataSupport.findLast(News.class);  
//指定多個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);  
//查詢所有
List<News> allNews = DataSupport.findAll(News.class);  
//條件查詢
List<News> newsList = DataSupport.where("commentcount > ?", "0").find(News.class);  
//只要title和content這兩列資料的條件查詢
List<News> newsList = DataSupport.select("title", "content") .where("commentcount > ?", "0").find(News.class); 
//倒敘
List<News> newsList = DataSupport .where("commentcount > ?", "0") .order("publishdate desc").find(News.class);  
//只要前十條資料
List<News> newsList = DataSupport .where("commentcount > ?", "0").limit(10).find(News.class);  
//從第五個往後的十條,不包括第五條
List<News> newsList = DataSupport.limit(10).offset(5).find(News.class);  

查詢語句繁雜, 可以參考:http://blog.csdn.net/guolin_blog/article/details/40153833

九,Demo地址

https://github.com/baitutang1221/LitePalDemo

十,參考文章

http://blog.csdn.net/guolin_blog/article/details/38556989
http://blog.csdn.net/guolin_blog/article/details/39345833
http://blog.csdn.net/guolin_blog/article/details/40083685
http://blog.csdn.net/guolin_blog/article/details/40153833
http://blog.csdn.net/u012453607/article/details/51280290