package object;

import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class ObjectRowMapper implements RowMapper{
    private Class className;
   
    public ObjectRowMapper(Class className){
        this.className = className;
    }
   
   
    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
       
       
        Object nt = new Object();
        Field[] fields = className.getDeclaredFields();
        try {
            nt = className.newInstance();
            for (Field field : fields) {
                //如果结果中没有改field项则跳过
                try {
                    rs.findColumn(field.getName());
                } catch (Exception e) {
                    continue;
                }
                //修改相应filed的权限
                boolean accessFlag = field.isAccessible();
                field.setAccessible(true);
                String value = rs.getString(field.getName());
                value = value==null?"":value;
                setFieldValue(nt, field, value);
               
                //恢复相应field的权限
                field.setAccessible(accessFlag);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return nt;
    }
   
   
    public static void setFieldValue(Object form, Field field, String value) {

String elemType = field.getType().toString();

if (elemType.indexOf("boolean") != -1||elemType.indexOf("Boolean") != -1) {
            try {
                field.set(form, Boolean.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("byte") != -1||elemType.indexOf("Byte") != -1) {
            try {
                field.set(form, Byte.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("char") != -1||elemType.indexOf("Character") != -1) {
            try {
                field.set(form, Character.valueOf(value.charAt(0)));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("double") != -1||elemType.indexOf("Double") != -1) {
            try {
                field.set(form, Double.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("float") != -1||elemType.indexOf("Float") != -1) {
            try {
                field.set(form, Float.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("int") != -1||elemType.indexOf("Integer") != -1) {
            try {
                field.set(form, Integer.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("long") != -1||elemType.indexOf("Long") != -1) {
            try {
                field.set(form, Long.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else if (elemType.indexOf("short") != -1||elemType.indexOf("Short") != -1) {
            try {
                field.set(form, Short.valueOf(value));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else {
            try {
                field.set(form, (Object) value);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}

 

最新文章

  1. 一个粗心的Bug,JSON格式不规范导致AJAX错误
  2. 【转载】.NET模拟POST登录并保持登录状态
  3. Ubuntu的Mysql指南
  4. 利用Ramdisk为Firefox 加速
  5. Time, Clocks, and the Ordering of Events in a Distributed System
  6. hibernate相关知识
  7. MySQL创建用户、授权等
  8. BF算法(朴素的模式匹配算法)
  9. Scala中的语言特性是如何实现的(3) -- Trait
  10. hdu_1907:John(Nim变形)
  11. [UOJ UNR#1]奇怪的线段树
  12. 系统计划 Cron作业 为什么/etc/crontab /etc/cron.d /etc/cron.* 那么多的定义方式????
  13. Python初始编码-3
  14. 微信小程序如何玩转分销
  15. Exception in thread "main" java.lang.UnsatisfiedLinkError:
  16. python 全栈开发:基础复习
  17. 勒让德定理---阶乘中素因子p的指数
  18. 【洛谷】P1040 加分二叉树
  19. 使用MouseWithoutBordersSetup共享鼠标键盘教程
  20. forEach和map的区别

热门文章

  1. TFS 中工作项的定制-修改工作流
  2. SQL2000 3核6核 CUP 安装SP4
  3. 蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)
  4. python基础13 ---函数模块3(正则表达式)
  5. selenium java 封装
  6. Navicat Premium试用期破解方法(转)
  7. python cookbook 字符串和文本
  8. 20165101刘天野 2018-2019-2《网络对抗技术》Exp8 Web基础
  9. Symbol Table(符号表)
  10. Cocos2d-x中常用宏的作用