Java 自定義註解

直接切入正題,下面我們自定義一個註解Entity,並通過Entity註解動態獲取指定類的映射表進行數據查詢(本案例只作爲演示,所以比較簡要),請看代碼:

1、定義一個Java註解Entity

package com.tyyd.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Target是Java的元註解,可以指定註解的生效範圍(如範圍是類、方法、構造方法等)
 * 本註解聲明作用範圍爲類和屬性
 * Retention:指定註解的生命週期,如RetentionPolicy.RUNTIME指定註解存活於運行時,
 * RetentionPolicy.CLASS指定存活於class文件中
 */
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Entity {
    // 通過default指定一個默認值
    public String value() default "";
}

2、定義一個實體類,並給它賦予@Entity註解 

package com.tyyd.entity;

import com.tyyd.anno.Entity;

/**
 * 註解當中如果只有一個值如@Entity("city"),那麼默認"city"對應的是value的值。它等價於@Entity(value="city")。
 * 如果註解當中有多個屬性且對應多個值@Entity(value="city", name="wzx"),則value=以及name=不能省略
 */
@Entity("city")
public class CityEntity {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3、定義一個工具類,通過這個工具類中的方法,我們動態獲取一條SQL查詢語句

package com.tyyd.util;

import com.tyyd.anno.Entity;

public class CommUtil {

    /**
     * 通過一個對象,來構建一條查詢的SQL語句
     * @param object
     */
    public static String buildQuerySqlForEntity(Object object) {
        Class clazz = object.getClass();
        // 判斷是否加了Entity註解
        if (clazz.isAnnotationPresent(Entity.class)) {
            // 得到註解
            Entity entity = (Entity)clazz.getAnnotation(Entity.class);
            String entityName = entity.value();
            String sql = "select * from " + entityName + " where id = '1' and name = 'wzx'";
            return sql;
        }
        return "";
    }
}

運行一個Test測試類,查看控制檯輸出結果:

import com.tyyd.entity.CityEntity;
import com.tyyd.util.CommUtil;

public class Test {
    public static void main(String[] args) {
        CityEntity cityEntity = new CityEntity();
        cityEntity.setId("1");
        cityEntity.setName("test");
        String sql = CommUtil.buildQuerySqlForEntity(cityEntity);
        System.out.println(sql);
    }
}

以上便是一個自定義註解及其功能的案例演示。覺得文章能夠給你帶來幫助,可以給個贊,關注本人的博客哦。一起努力,相互學習,共同成長!一個Java架構師的成長之路……

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