Java反射取得一个对象的信息
来源:互联网 发布:知乎一小时系列 网盘 编辑:程序博客网 时间:2024/05/01 02:47
获取实体类字段及相应注解
package com.mnt.database.dao.customer;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.List;import javax.persistence.Column;import javax.persistence.Table;import org.springframework.stereotype.Repository;import com.mnt.common.util.JodaTimeTools;import com.mnt.common.util.StringTools;import com.mnt.database.dao.CoreHibernateDAO;/** * Ftp服务器DAO * * @author zcq * @version 1.0 * * 变更履历: * v1.0 2016-3-22 zcq 初版 */@Repositorypublic class FtpDAO extends CoreHibernateDAO { /** * 查询同步数据 * * @author zcq * @param condition * @return */ public List<Object[]> queryDataForFTP(Class<?> queryClass) { // 设置别名 String aliasName = queryClass.getSimpleName(); // 组织要查询的字段 String fieldNames = ""; for (Field field : getFields(queryClass)) { String name = field.getName(); if ("serialVersionUID".equals(name)) { continue; } try { PropertyDescriptor pd = new PropertyDescriptor(field.getName(), queryClass); Method getMethod = pd.getReadMethod();// 获得get方法 if (getMethod.isAnnotationPresent(Column.class)) { Column column = (Column) getMethod.getAnnotation(Column.class); fieldNames += "," + aliasName + "." + column.name(); } else { fieldNames += "," + aliasName + "." + StringTools.nameFieldToColumn(name); } } catch (IntrospectionException e) { e.printStackTrace(); } } // 生成查询语句 String yesterday = JodaTimeTools.before_current_day_str(1, JodaTimeTools.FORMAT_6); String querySQL = "SELECT " + fieldNames.replaceFirst(",", " ") + " FROM " + queryClass.getAnnotation(Table.class).name() + " AS " + aliasName + " WHERE " + aliasName + ".create_time LIKE '%" + yesterday + "%'"; return this.SQLQuery(querySQL); } /** * 实体类字段 * * @author zcq * @param queryClass * @return */ private Field[] getFields(Class<?> queryClass) { Field[] fields = queryClass.getDeclaredFields(); Class<?> superClass = queryClass.getSuperclass(); while (superClass != null) { Field[] tempField = superClass.getDeclaredFields(); Field[] tempResultField = new Field[fields.length + tempField.length]; for (int i = 0; i < fields.length; i++) { tempResultField[i] = fields[i]; } for (int j = 0; j < tempField.length; j++) { tempResultField[j + fields.length] = tempField[j]; } fields = tempResultField; superClass = superClass.getSuperclass(); } Field.setAccessible(fields, true); return fields; }}
0 0
- Java反射取得一个对象的信息
- JAVA-反射-getGenericSuperclass()——Java怎么取得一个对象的泛型类型
- Java反射之通过反射获取一个对象的方法信息
- 如何利用java的反射机制动态的取得对象的属性?
- 如何取得数据库对象的脚本信息
- java中利用反射获得对象的各种信息
- Java中通过反射获得对象的属性信息
- Java中通过反射获得对象的属性信息
- java如何通过反射取得泛型的实例化对象
- java基础-反射2(反射,反射操作对象,Class对象的使用,类型信息的获取)
- java反射之获取对象信息
- 如何使用反射取得对象的属性值
- 通过Java的反射机制来Copy一个对象
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- Java中的反射机制 一个利用反射进行对象拷贝的例子
- Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
- Java反射机制(取得类的全部的属性)
- Java反射机制(取得类的全部的属性)
- 社保缴费基数计算方式
- 五步轻松搞定Linux下的文件同步(备份)
- C#基础知识(六)yield 关键字
- 20160824音频开发从AVSpeechSynthesisVoice开始及AVAudioPlayer开发的几个问题处理方法
- iOS textView光标位置输入以及删除字符或者emoji表情(自定义键盘的删除方法)
- Java反射取得一个对象的信息
- selenium之 辨识alert、window以及操作
- jQuery中attr()、prop()、data()用法及区别
- 天纵智能软件快速开发年度变化曲线分析插件
- 简单字符串的压缩
- 14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
- MySQL:给原有表主键 添加 AUTO_INCREMENT
- Source Insight v3.5.0076绿色破解版
- 2-sat