• Hibernate——注解结合反射来构建SQL语句的简单的处理器模型


    基础知识:实际上Java注解与普通修饰符(public、static、void等)的使用方式并没有多大区别

    【1】@Test内部没有定义其他元素,所以@Test也称为标记注解(marker annotation),但在自定义注解中,一般都会包含一些元素以表示某些值,方便处理器使用

    【2】利用运行时注解来组装数据库SQL的构建语句的过程

    【3】Java8后,新增的TYPE_PARAMETER可以用于标注类型参数,而TYPE_USE则可以用于标注任意类型(不包括class)。

    【4】声明注解元素时可以使用基本类型但不允许使用任何包装类型,同时还应该注意到注解也可以作为元素的类型,也就是嵌套注解

    【5】对于非基本类型的元素,无论是在源代码中声明,还是在注解接口中定义默认值,都不能以null作为值

    【6】注解是不支持继承的,因此不能使用关键字extends来继承某个@interface,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口

    【7】所谓的快捷方式就是注解中定义了名为value的元素,并且在使用该注解时,如果该元素是唯一需要赋值的一个元素,那么此时无需使用key=value的语法,而只需在括号内给出value元素所需的值即可:ex:@IntegerVaule(20)

    【8】其他内置注解源码:

    image

    deprecation:使用了不赞成使用的类或方法时的警告;
    unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型;
    fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
    path:在类路径、源文件路径等中有不存在的路径时的警告;
    serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
    finally:任何 finally 子句不能正常完成时的警告;
    all:关于以上所有情况的警告。

    【9】@Documented 被修饰的注解会生成到javadoc中:javadoc DocumentDemo.java DocumentA.java DocumentB.java

    【10】@Inherited 可以让注解被继承,但这并不是真的继承,只是通过使用@Inherited,可以让子类Class对象使用getAnnotations()获取父类被@Inherited修饰的注解

    【4】应用:数据库表与Bean类的映射

    注射与反射结合:

    Java使用Annotation接口代表注解元素,该接口是所有Annotation类型的父接口。同时为了运行时能准确获取到注解的相关信息,Java在java.lang.reflect 反射包下新增了AnnotatedElement接口,它主要用于表示目前正在 VM 中运行的程序中已使用注解的元素,通过该接口提供的方法可以利用反射技术地读取注解的信息,如反射包的Constructor类、Field类、Method类、Package类和Class类都实现了AnnotatedElement接口。

    ————————————————

    API接口包括:

    image

    ==================================================================


    【1】@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})

    【2】@Retention(value={SOURCE,CLASS,RUNTIME})

    【3】注解支持地数据类型:

    • 所有基本类型(int,float,boolean,byte,double,char,long,short)

    • String

    • Class

    • enum

    • Annotation

    • 上述类型的数组

    ex:

        //枚举类型
         enum Status {FIXED,NORMAL};

        //声明枚举
         Status status() default Status.FIXED;

        //布尔类型
         boolean showSupport() default false;

        //String类型
         String name()default "";

        //class类型
         Class<?> testCase() default Void.class;

        //注解嵌套
         Reference reference() default @Reference(next=true);

        //数组类型
        long[] value();

    运行时注解来组装数据库SQL的构建语句:实例



    Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表



    Java 8中注解增强

    【1】@Repeatable是JDK1.8新加入的,它表示在同一个位置重复相同的注解

    ex:

    @Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited //添加可继承元注解
    @Repeatable(FilterPaths.class)
    public @interface FilterPath {
         String  value();
    }


    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited //添加可继承元注解
    @interface FilterPaths {
         FilterPath[] value();
    }

    @FilterPath("/web/list")
    @FilterPath("/web/getList")
    class CC { }

    //AA上不使用@FilterPath注解,getAnnotationsByType将会从父类查询
    class AA extends CC{}

    【2】@FilterPath和@FilterPath时必须指明@Inherited,




    原文链接:https://blog.csdn.net/javazejian/article/details/71860633
  • 相关阅读:
    LightOJ1002 分类: 比赛 最短路 2015-08-08 15:57 15人阅读 评论(0) 收藏
    DZY Loves Chemistry 分类: CF 比赛 图论 2015-08-08 15:51 3人阅读 评论(0) 收藏
    周赛-DZY Loves Chessboard 分类: 比赛 搜索 2015-08-08 15:48 4人阅读 评论(0) 收藏
    周赛-Equidistant String 分类: 比赛 2015-08-08 15:44 6人阅读 评论(0) 收藏
    周赛-Toy Cars 分类: 比赛 2015-08-08 15:41 5人阅读 评论(0) 收藏
    A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏
    哈希-4 Values whose Sum is 0 分类: POJ 哈希 2015-08-07 09:51 3人阅读 评论(0) 收藏
    哈希-Gold Balanced Lineup 分类: POJ 哈希 2015-08-07 09:04 2人阅读 评论(0) 收藏
    哈希-Snowflake Snow Snowflakes 分类: POJ 哈希 2015-08-06 20:53 2人阅读 评论(0) 收藏
    欧拉通路-Play on Words 分类: POJ 图论 2015-08-06 19:13 4人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13257146.html
Copyright © 2020-2023  润新知