guyanqing 9 months ago
parent
commit
5b127bd680

+ 0 - 2
src/main/java/com/sf/javase/day19/T.java

@@ -239,7 +239,5 @@ public class T {
         addMethod.invoke(list,123);
         addMethod.invoke(list,"123");
         System.out.println(list);
-
-
     }
 }

+ 11 - 0
src/main/java/com/sf/javase/day20/Column.java

@@ -0,0 +1,11 @@
+package com.sf.javase.day20;
+
+import java.lang.annotation.*;
+
+@Target(value = ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+public @interface Column {
+    String columnName();  //字段名
+    String columnType();   //字段类型
+}

+ 41 - 0
src/main/java/com/sf/javase/day20/Student.java

@@ -0,0 +1,41 @@
+package com.sf.javase.day20;
+
+@Table(value = "student")
+public class Student {
+    @Column(columnName = "t_id",columnType = "Integer")
+    private Integer id;
+    @Column(columnName = "t_name",columnType = "varchar(25)")
+    private String name;
+
+    public Student() {
+    }
+
+    public Student(Integer id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return "Student{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 36 - 0
src/main/java/com/sf/javase/day20/T.java

@@ -0,0 +1,36 @@
+package com.sf.javase.day20;
+
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Field;
+
+/**
+ * 反射 - 自定义注解和注解的使用
+ */
+public class T {
+    @Test
+    public void t1(){
+    //读取注解
+    Class<Student> studentClass = Student.class;
+    Table table = studentClass.getAnnotation(Table.class);
+    String tableName = table.value();
+    Field[] declaredFields = studentClass.getDeclaredFields();
+        String[] strs = new String[declaredFields.length];
+        int index = 0;
+        for (Field field : declaredFields) {
+            Column column = field.getAnnotation(Column.class);
+            strs[index++] = column.columnName();
+        }
+        ///   SELECT   字段名....  FROM   表名
+        String sql = "SELECT ";
+        for (int i = 0;i<strs.length;i++){
+            sql += strs[i];
+            if(i<strs.length-1){
+                sql += ", ";
+            }
+        }
+        sql += " FROM "+tableName+";";
+            //  SELECT t_id,t_name FROM student;
+        System.out.println(sql);
+    }
+}

+ 10 - 0
src/main/java/com/sf/javase/day20/Table.java

@@ -0,0 +1,10 @@
+package com.sf.javase.day20;
+
+import java.lang.annotation.*;
+
+@Target(value = ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited    //  是否可继承    是
+public @interface Table {
+    String value();
+}

BIN
target/classes/com/sf/javase/day19/T.class


BIN
target/classes/com/sf/javase/day20/Column.class


BIN
target/classes/com/sf/javase/day20/Student.class


BIN
target/classes/com/sf/javase/day20/T.class


BIN
target/classes/com/sf/javase/day20/Table.class