java 代码
- import java.lang.reflect.Method;
- /**
- * 获取指定bean的指定字段的值
- */
- public class BeanUtils {
- private BeanUtils(){}
- /**
- * 根据beanName和列名字获取hql语句
- * @param beanName
- * @param columnNames
- * @return 以list形式返回数据的hql语句
- */
- public static String getHql(String beanName, String[] columnNames){
- StringBuffer sb = new StringBuffer();
- sb.append("select new list(");
- StringBuffer columnString = new StringBuffer();
- for(int i=0,len=columnNames.length;i<len;i++){
- columnString.append(",");
- columnString.append(columnNames[i]);
- }
- sb.append(columnString.substring(1));
- sb.append(") from ");
- if(Character.isUpperCase(beanName.charAt(0)))
- sb.append(beanName);
- else
- sb.append(upperFirstChar(beanName));
- return sb.toString();
- }
- /**
- * @param bean 获取到的域对象
- * @param fieldName 欲获取值的字段名
- * @return 字段在当前bean封装下的值
- */
- public static Object getFieldByName(Object bean, String fieldName){
- try {
- Method m = bean.getClass().getMethod("get"+upperFirstChar(fieldName), null);
- return m.invoke(bean, null);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- private static String upperFirstChar(String orig){
- return Character.toUpperCase(orig.charAt(0)) + orig.substring(1);
- }
- }