程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> EasyDBO中Java注解配置映射的原理及使用

EasyDBO中Java注解配置映射的原理及使用

編輯:關於JAVA

我們知道,在EasyDBO最後一個測試版本中,增加了使用注解來配置對象及關系表映射的功能。前段時間看到有人在問注解中怎麼配置主鍵屬性及主鍵生成器,由於在開發文檔中使用的是默認配置,所以文檔中使用了下面的例子:

import Java.io.Serializable;

import Java.util.Date;import com.easyjf.dbo.annotation.*;

@Table(tableName="message")

public class Message implements Serializable{

  @TableFIEld(name="cid")

  private String cid;

  @TableFIEld(name="title")

  private String title1;

  @TableFIEld(name="content")

  private String content1;

  @TableFIEld(name="inputUser")

  private String inputUser;

  @TableFIEld(name="inputTime")

  private Date inputTime;

  @TableFIEld(name="publish")

  private Boolean publish1;

  @TableFIEld(name="status")

  private Integer status1;

  public String getCid() {

    return cid;

  }

  public void setCid(String cid) {

    this.cid = cid;

  }

  //...

  //其它的getter及setter方法

}

 

 這裡面沒有演示怎麼配置主鍵屬性及生成器,我們分別來看看@Table及@TabelFIEld兩個標簽的源代碼:

package com.easyjf.dbo.annotation;

import Java.lang.annotation.Retention;

import Java.lang.annotation.RetentionPolicy;

/**

* 用於定義表結構的標簽

* @author 大峽

*

*/

@Retention(RetentionPolicy.RUNTIME)

public @interface Table {

/**

* 表名

* @return

*/

String tableName();

/**

* 表主鍵

* @return

*/

String keyFIEld() default "cid";

/**

* 主鍵值生成器

* @return

*/

String keyGenerator() default "com.easyjf.dbo.RandomIdGenerator";

}

  由源碼可以看到,@Table有三個屬性,tableName用來定義表名,keyField用來定義主鍵屬性,keyGenerator用來定義主鍵生成器。而keyField與keyGenerator有一個默認值,前面的Message類定義由於使用了默認值,因此沒有使用keyFIEld及keyGenerator。若要自定義自己的默認值,可以寫成如下形勢:

@Table(tableName="message",keyFIEld="id",keyGenerator="com.easyjf.dbo.NullIdGenerator")

public class Message implements Serializable{

  ...

}

  再來看看@TableFIEld的源文件:

package com.easyjf.dbo.annotation;

import Java.lang.annotation.Retention;

import Java.lang.annotation.RetentionPolicy;

/**

* 用於定義表字段的標簽

* @author 大峽

*

*/

@Retention(RetentionPolicy.RUNTIME)

public @interface TableFIEld

{

public String name() ;

boolean lazy() default false;

boolean unique() default false;

}

  由於已經把lazy及unique給了默認值,所以我們看到示例中只定義了屬性對應的例即可。

  @TableFIEld只定義了普通的屬性,另外還有OneToOne、ManyToOne、ManyToMany等屬性,詳細請參考EasyDBO開發文檔。

http://www.easyjf.com/easydbo/devguide.htm

  另外,關於注解配置應該還會在正式版本中加入一些比較適用的內容,EasyDBO也還會作一些調整,請關注!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved