首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 註解在 ORM 框架中的應用:@SqlField 標記字段映射關係

     編輯:程式設計綜合問答

代碼示例

@Retention(RetentionPolicy.RUNTIME)
public @interface SqlField {
    KeyType type() default KeyType.NOT_KEY;
    enum KeyType { NOT_KEY, PRIMARY_KEY, AUTO_INCREMENT_KEY }
}

public class Student {
    @SqlField(type = KeyType.AUTO_INCREMENT_KEY) public int id;
    @SqlField public float score;
    @SqlField public int sex;
    @SqlField public String num;
}

核心作用:編譯期標記 + 運行期反射掃描

  1. 標記語義:告知 ORM 引擎「這些 public 字段對應資料表欄位」,type 屬性進一步指定主鍵策略。
  2. 運行期處理流程:
    • 掃描實體類(掃包或註冊)。
    • 獲取類上所有字段 Field[] fields = clazz.getDeclaredFields()。
    • 檢查註解 field.isAnnotationPresent(SqlField.class)。
    • 讀取屬性 SqlField ann = field.getAnnotation(SqlField.class); KeyType kt = ann.type();。
    • 構建 INSERT/UPDATE/SELECT SQL,主鍵字段自動生成或回填。

優勢

  • 零配置文件,POJO 即映射元數據,維護性高。
  • 編譯器檢查註解語法,減少拼寫錯誤。
  • 可擴展:添加 columnName(), nullable(), length() 等屬性支援更精細映射。

主流框架對比

Hibernate/JPA 使用 @Entity, @Id, @Column, @GeneratedValue;MyBatis Plus 亦支援註解模式。自定義註解適合輕量級或教學專案,生產環境建議使用成熟 ORM。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved