ORM,即Object Relation Mapping,對象關係映射,實現了程式裡面的類和資料庫裡面的數據之間的對應關係,對資料庫的操作可以通過對類的操作去實現,不用再寫SQL語句,從而提高了開發效率,節省了開發時間。 在Java Web開發中,有很多的ORM框架,如Hibernate等。在And ...
ORM,即Object Relation Mapping,對象關係映射,實現了程式裡面的類和資料庫裡面的數據之間的對應關係,對資料庫的操作可以通過對類的操作去實現,不用再寫SQL語句,從而提高了開發效率,節省了開發時間。
在Java Web開發中,有很多的ORM框架,如Hibernate等。在Android開發中,也有一些ORM框架,實現了對SQLite資料庫的操作。比如說Litepal、GreenDAO、OrmLite等。本文重點介紹Litepal。
1. 映射文件和實體類
下載Litpal的Jar文件,並複製到libs文件夾下麵。在assets文件夾下麵新建一個litepal.xml文件:
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="easydb" /> <version value="1" /> <list> <mapping class="com.example.hzhi.fragmentdemo.Myclass" /> </list> </litepal>
其中Myclass是實體類:
package com.example.hzhi.fragmentdemo; import org.litepal.crud.DataSupport; /** * Created by Administrator on 2016/8/27. */ public class Myclass extends DataSupport { private Integer Id; private String Name; private String Teacher; private Integer Studytime; private String Picture; public Myclass() { } public Myclass(Integer id, String name, Integer studytime, String teacher, String picture) { Id = id; Name = name; Studytime = studytime; Teacher = teacher; Picture = picture; } public Integer getId() { return Id; } public void setId(Integer id) { Id = id; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getTeacher() { return Teacher; } public void setTeacher(String teacher) { Teacher = teacher; } public Integer getStudytime() { return Studytime; } public void setStudytime(Integer studytime) { Studytime = studytime; } public String getPicture() { return Picture; } public void setPicture(String picture) { Picture = picture; } }
這樣就設置了資料庫的表和實體類的對應關係,當進行資料庫操作時,如果資料庫還沒有這張表,就會新建一張表,表的名稱和實體類的名稱相同,表的欄位就是實體類的屬性。
在AndroidManifest.xml文件中的application節點加上配置:
android:name="org.litepal.LitePalApplication"
2. 插入數據
代碼很簡單:
mc = new Myclass(); mc.setId(0); mc.setName("電腦網路"); mc.setTeacher("張三"); mc.setStudytime(120); mc.save();
是不是幾乎和Hibernate的插入數據一模一樣?省去了寫SQL語句的麻煩!
3. 查詢數據
public static List<Myclass> listClass; listClass = DataSupport.findAll(Myclass.class);
以上語句是查詢出所有的記錄。還有其他一些方法:
(1)DataSupport.findAll(Myclass.class, 1, 3, 5),查詢ID為1、3、5的數據;
(2)DataSupport.select().where().order().find(Myclass.class),指明瞭要查詢的欄位以及查詢條件;
(3)Cursor cursor = DataSupport.findBySQL(),按照SQL語句查詢;
(4)DataSupport.findFirst(),查詢第一條記錄;
(5)DataSupport.findLast(),查詢最後一條記錄。