读书人

应用反射封装RowMapper

发布时间: 2013-08-14 14:27:55 作者: rapoo

使用反射封装RowMapper

package com.xinhuanet.cloudDesk.dao.impl;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.sql.ResultSet;import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;public abstract class BaseRowMapper<T> implements RowMapper {@Overridepublic T mapRow(ResultSet rs, int index) throws SQLException {try {Class clazz = Class.forName(this.getClassName());Object obj = clazz.newInstance();Field[] fields = clazz.getDeclaredFields();if (fields == null) {return null;}for (int i = 0; i < fields.length; i++) {String fieldName = fields[i].getName();Class fieldClass = fields[i].getType();String methodName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);  Method method = clazz.getMethod(methodName , new Class[]{fieldClass});method.invoke(obj, rs.getObject(fieldName.toLowerCase()));}return (T) obj;} catch (Exception e) {e.printStackTrace();return null;}}/** * 子类的类名 * @return */public abstract String getClassName();}


package com.xinhuanet.cloudDesk.dao.impl;public class GroupRowMapper<Group> extends BaseRowMapper {@Overridepublic String getClassName() {return "com.xinhuanet.cloudDesk.Bean.Group";}}


/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.xinhuanet.cloudDesk.Bean;import java.io.Serializable;/** *  * @author Administrator */public class Group implements Serializable {private Integer id;private String name;private String description;private Integer sortOrder;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public Integer getSortOrder() {return sortOrder;}public void setSortOrder(Integer sortOrder) {this.sortOrder = sortOrder;}}

读书人网 >编程

热点推荐