首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

用RowMapper打包查询结果自定义类(转)

2012-10-26 
用RowMapper封装查询结果自定义类(转)package objectimport java.lang.reflect.Fieldimport java.sql.Re

用RowMapper封装查询结果自定义类(转)

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;    }        /*     * 该方法自动将数据库字段对应到Object中相应字段     * 要求:数据库与Object中字段名相同     *      */    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();            }        }    }}

?

热点排行