java 获取泛型对象实体类的表名

 说明:

        获取实体对象表名,主要是为了获取表名做特殊的业务,但是获取表名不一定要这样获取,但是这是为了统一而实现的功能,其实是在这里面实现的,https://blog.csdn.net/qq_38428623/article/details/105234896

1、实体类型

import javax.persistence.Table;

@Data
@Table(name = "Test")
public class Test {
   
    /**
     * 主键
     */
    @Id
    private String id;

    /**
     * 请假人ID
     */
    @Column(name = "name")
    private String name;
}

2、基本查询(仅核心代码) 

/**
* T:实体类
*/
public class BaseQuery<T> {

    /**
     * 获取实体类的表名
     */
    public String getTableName(){
        finalParameterizedType paraType = (ParameterizedType) 
        this.getClass().getGenericSuperclass();
        final Type[] types = paraType.getActualTypeArguments();
        String tableName = null;
        for (final Type type : types) {
            final Annotation annotation = ((Class) type).getAnnotation(Table.class);
            if (annotation == null) {
                continue;
            }
            tableName = ((Table) annotation).name();
            break;
        }
       return tableName;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38428623/article/details/105423350