通用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;
}
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();
}
}
}
}
最新文章
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
- 【转载】.NET模拟POST登录并保持登录状态
- Ubuntu的Mysql指南
- 利用Ramdisk为Firefox 加速
- Time, Clocks, and the Ordering of Events in a Distributed System
- hibernate相关知识
- MySQL创建用户、授权等
- BF算法(朴素的模式匹配算法)
- Scala中的语言特性是如何实现的(3) -- Trait
- hdu_1907:John(Nim变形)
- [UOJ UNR#1]奇怪的线段树
- 系统计划 Cron作业 为什么/etc/crontab /etc/cron.d /etc/cron.* 那么多的定义方式????
- Python初始编码-3
- 微信小程序如何玩转分销
- Exception in thread ";main"; java.lang.UnsatisfiedLinkError:
- python 全栈开发:基础复习
- 勒让德定理---阶乘中素因子p的指数
- 【洛谷】P1040 加分二叉树
- 使用MouseWithoutBordersSetup共享鼠标键盘教程
- forEach和map的区别
热门文章
- TFS 中工作项的定制-修改工作流
- SQL2000 3核6核 CUP 安装SP4
- 蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)
- python基础13 ---函数模块3(正则表达式)
- selenium java 封装
- Navicat Premium试用期破解方法(转)
- python cookbook 字符串和文本
- 20165101刘天野 2018-2019-2《网络对抗技术》Exp8 Web基础
- Symbol Table(符号表)
- Cocos2d-x中常用宏的作用