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());
    }
    }
  • 相关阅读:
    Cobbler学习之一--Fedora17下配置Cobbler安装环境
    linux下 tar解压 gz解压 bz2等各种解压文件使用方法
    linux性能检测工具
    firefox的plugin-container进程关闭方法
    部署额外域控制器,Active Directory
    利用yum下载软件包的三种方法
    HP iLo2 试用序列号
    (转)Linux下root密码丢失和运行级别错误的解决办法
    linux下的5个查找命令
    (转)CentOs上配置samba服务
  • 原文地址:https://www.cnblogs.com/nancheng/p/9222877.html
Copyright © 2011-2022 走看看