zoukankan      html  css  js  c++  java
  • 纯手写ORM框架

    必须掌握Java的反射机制和自定义注解

    package com.wyh.test;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    import java.lang.reflect.Field;
    
    //注解是对应表的关联
    @Retention(RetentionPolicy.RUNTIME)
    @interface Table {
    String value();
    }
    
    //属性对应注解
    @Retention(RetentionPolicy.RUNTIME)
    @interface Propety {
    String name();
    
    int leng() default 0;
    
    }
    @Table("student")
    class Student 
    {
    @Propety(name = "student_id", leng = 10)
    private String studentId;
    @Propety(name = "student_name")
    private String studentName;
    @Propety(name = "student_age")
    private String studentAge;
    public String getStudentId() {
    
    return studentId;
    }
    public void setStudentId(String studentId) {
    
    this.studentId = studentId;
    }
    public String getStudentName() {
    
    return studentName;
    }
    public void setStudentName(String studentName) {
    
    this.studentName = studentName;
    }
    public String getStudentAge() {
    
    return studentAge;
    }
    public void setStudentAge(String studentAge) {
    
    this.studentAge = studentAge;
    }
    
    
    }
    public class Test003 {
    public static void main(String[] args) throws ClassNotFoundException {
    Class<?> forName = Class.forName("com.wyh.test.Student");//反射机制
    
    // 获取所有当前的方法
    Field[] declaredFields = forName.getDeclaredFields();
    StringBuffer sf = new StringBuffer();
    sf.append(" select ");
    for (int i = 0; i < declaredFields.length; i++) {
    Field field = declaredFields[i];
    //获取属性上的注解
    Propety propety = field.getDeclaredAnnotation(Propety.class);
    sf.append(propety.name());
    if (i < declaredFields.length - 1) {
    sf.append(" , ");
    }
    }
    // 获取类上注解参数
    Table declaredAnnotation = forName.getDeclaredAnnotation(Table.class);
    sf.append(" from " + declaredAnnotation.value());
    System.out.println(sf.toString());
    }
    }
  • 相关阅读:
    MySQL 优化实施方案
    MySQL Replication 主从复制全方位解决方案
    CentOS 7.X 系统安装及优化
    W25Q32的使用
    Word分栏
    转载:STM32之中断与事件---中断与事件的区别
    常见贴片电阻的分类、功率、封装、标注规则
    导线时延
    重装系统流程
    MFC应用程序向导生成的文件
  • 原文地址:https://www.cnblogs.com/nancheng/p/9222877.html
Copyright © 2011-2022 走看看