注解

@Target(ElementType.METHOD) 元注解;描述注解的作用范围

@Retention(RetentionPolicy.RUNTIME) 元注解;用于描述注解的生命周期

@interface  定义一个自定义注解

package com.fh.gaoji.anotation;

import java.lang.annotation.*;
import java.lang.reflect.Field;

public class ClassAndTableYingSheTest {
    public static void main(String[] args) throws NoSuchFieldException {
        Class<Stu> stuClass = Stu.class;
        //获取类上的所有注解
        Annotation[] annotations = stuClass.getAnnotations();
        for (Annotation annotation : annotations) {
            System.out.println(annotation);
        }
        //获取ClassAndTable注解
        ClassAndTable classAndTable = stuClass.getAnnotation(ClassAndTable.class);
        System.out.println(classAndTable.value());

        //获取FildAndColum注解
        Field field = stuClass.getDeclaredField("name");
        FildAndColum annotation = field.getAnnotation(FildAndColum.class);
        System.out.println(annotation.name());
        System.out.println(annotation.type());
        System.out.println(annotation.length());


    }
}
@ClassAndTable("db_student")
class Stu{

    @FildAndColum(name = "db_name",type = "int",length = 10)
    private int id;

    @FildAndColum(name = "db_name",type = "varchar",length = 100)
    private String name;

    public int getId() {
        return id;
    }

    public Stu setId(int id) {
        this.id = id;
        return this;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Stu{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

/**
 * 类和表的映射
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface ClassAndTable{
    String value();
}

/**
 * 属性和列的映射
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface FildAndColum{
    String name() ;
    String type();
    int length();
}

 

posted @ 2022-06-01 18:31  禁止摆烂  阅读(27)  评论(0)    收藏  举报