Orm之開篇

Orm_Reflect_DB——Orm

ORM系列章節列表(點擊查閱):

這裏用最簡單的數據庫操作,爲大家透析Orm+Reflect+DataBase結合的小框架,相信用過Orm框架的人都會覺得在解耦和使用上非常方便,同樣也覺得它很神祕,那麼我就帶大家來慢慢揭開它神祕的面紗,其實so easy !

因爲涉及的東西比較多,我這個人不喜歡長篇大論,所以將所講的東西拆分成三個部分,方便大家理解和接受。

第一部分我們就來講一下Orm這個東西,具體含義找度娘幫你大笑,首先貼一段XML代碼:

<orm tablename="students" beanName="pdm.com.ormdatabase.bean.Student"
    daoName="pdm.com.ormdatabase.dao.StudentDao">
    <!-- 是否自增長identity -->
    <key column="_sid" property="stuId" type="java.lang.Integer" identity="true"></key>
    <item column="stu_name" property="stuName" type="java.lang.String"></item>
    <item column="stu_classname" property="stuClass" type="java.lang.String"></item>
</orm>




這裏我將它存放到assets目錄,文件名:Student.orm.xml方便操作。咋看一眼,不是太明白寫的啥東西,那麼我們繼續貼代碼:

創建一個bean目錄,用來存放實體類,類名Student,內容如下:

package pdm.com.ormdatabase.bean;
import java.util.Random;
/**
 * Created by pdm on 2016/10/3.
 * CSDN :http://write.blog.csdn.net/postlist
 * GitHub :https://github.com/flyingfishes
 */
public class Student {
   private Integer stuId;
   private String stuName;
   private String stuClass;
   
   public Student() {
      super();
      stuName = "name_"+ new Random().nextInt(10000);//隨機取數
      stuClass="class_"+new Random().nextInt(10000);
      // TODO Auto-generated constructor stub
   }
   public Student(String stuName, String stuClass) {
      super();
      this.stuName = stuName;
      this.stuClass = stuClass;
   }
   public Integer getStuId() {
      return stuId;
   }
   public void setStuId(Integer stuId) {
      this.stuId = stuId;
   }
   public String getStuName() {
      return stuName;
   }
   public void setStuName(String stuName) {
      this.stuName = stuName;
   }
   public String getStuClass() {
      return stuClass;
   }
   public void setStuClass(String stuClass) {
      this.stuClass = stuClass;
   }
   @Override
   public String toString() {
      return "Student [stuId=" + stuId + ", stuName=" + stuName
            + ", stuClass=" + stuClass + "]";
   }
}


然後我們看一下XML裏的property(屬性)對應的值,是不是跟 Student中的字段名一一對應,是不是有一點眉目了。

接下來繼續貼代碼(建立數據庫的代碼):

@Override
public void onCreate(SQLiteDatabase db) {
    db.beginTransaction();
    try {
        db.execSQL("create table students(_sid integer primary key autoincrement," +
                "stu_name varchar(20),stu_classname varchar(20))");

        db.setTransactionSuccessful();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        db.endTransaction();
    }
}


我們將建立數據庫表中的三個字段拿出來分別是:_sid,stu_name,stu_classname,跟XML中的column對應的值是不是一樣,包括後面的type跟數據庫創建字段的類型也都是一一對應關係。再看看orm標籤的tablename屬性對應的值不正是數據庫的表名。

講到了這裏Orm的基本概念是不是大概清楚了,通過XMl或者其他文本形式,將實體和數據庫中的表以及包含的字段關聯起來,是不是就有點“對象關係映射”的感覺了,這裏的XMl文件可以稱之爲關係映射配置文件。

接下來大家是不是想問,這樣有什麼用?   不用着急,我們一步步來,請看下一章節Orm(二):XML文本解析 + Application初始化配置文件。

源碼:Orm_Reflect_DB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章