博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尚学堂210 反射机制读取注解
阅读量:6616 次
发布时间:2019-06-25

本文共 2666 字,大约阅读时间需要 8 分钟。

package com.bjsxt.test.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(value={ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface SxtTable {    String value();}
package com.bjsxt.test.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(value={ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface SxtField {    String columnName();    String type();    int length();}
package com.bjsxt.test.annotation;@SxtTable("tb_student")public class SxtStudent {        @SxtField(columnName="id",type="int",length=10)    private int id;    @SxtField(columnName="sname",type="varchar",length=10)    private String studentName;    @SxtField(columnName="age",type="int",length=3)    private int age;            public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getStudentName() {        return studentName;    }    public void setStudentName(String studentName) {        this.studentName = studentName;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }        }
package com.bjsxt.test.annotation;import java.lang.annotation.Annotation;import java.lang.reflect.Field;/** * 使用反射读取注解的信息,模拟处理注解信息的流程 * @author 尚学堂高淇 * */public class Demo03 {        public static void main(String[] args) {        try {            Class clazz = Class.forName("com.bjsxt.test.annotation.SxtStudent");                        //获得类的所有有效注解            Annotation[] annotations=clazz.getAnnotations();            for (Annotation a : annotations) {                System.out.println(a);            }            //获得类的指定的注解            SxtTable st = (SxtTable) clazz.getAnnotation(SxtTable.class);            System.out.println(st.value());                        //获得类的属性的注解            Field f = clazz.getDeclaredField("studentName");            SxtField sxtField = f.getAnnotation(SxtField.class);            System.out.println(sxtField.columnName()+"--"+sxtField.type()+"--"+sxtField.length());                        //根据获得的表名、字段的信息,拼出DDL语句,然后,使用JDBC执行这个SQL,在数据库中生成相关的表                    } catch (Exception e) {            e.printStackTrace();        }            }}
 

 

 

程序运行的结果是:

@com.bjsxt.test.annotation.SxtTable(value=tb_student)

tb_student
sname--varchar--10

我们通过注解就可以获得对应的表名、字段的信息,我们就能够拼接处对应的sql语句,使用jdbc执行这个sql语言,在数据库中生成相关的表

 

转载于:https://www.cnblogs.com/kebibuluan/p/7268599.html

你可能感兴趣的文章
程序的测试
查看>>
mysql截取longblob类型字段内一小块数据的方法
查看>>
jquery轻松操作CSS样式
查看>>
5.完整网站开发
查看>>
使用msf对tomcat测试
查看>>
CSS3边框
查看>>
Spring事务隔离级别,事务传播行为
查看>>
CRC是什么?
查看>>
容器和物理机的文件共享
查看>>
[硬件]_ELVE_VS2015下opencv3.3的配置问题
查看>>
每次看完羽毛球赛
查看>>
Storm介绍及核心组件和编程模型
查看>>
在android studio中配置运行时签名
查看>>
第一章练习题
查看>>
三、JVM垃圾回收1(如何寻找垃圾?)
查看>>
robotframwork数据库测试(一)——pymysql与pyodbc
查看>>
Java EE (14) -- SSH配置
查看>>
Java Web Services (0) - Overview
查看>>
vue2组件之间双向数据绑定问题
查看>>
linux scp远程拷贝文件及文件夹
查看>>