参考下面的代码吧:
/**
* 从给定的 ResultSet 里按指定的 properties 读出数据填写到给定的 object 中。<br>
* 根据 obj 中 property 的数据类型决定读取数据时所使用的类型。<br>
* 现在支持的数据类型包括 int、long、boolean、float、double、String、sql.Timestamp、sql.Date、sql.Time、util.Date<br>
* NOTE: 要求 object 中 property 的名字与结果集中的字段名一致。<br>
* HINT: 结果集中的字段名是 case-insensitive 的,而 bean object 是 case-sensitive 的<br>
*/
protected void readObjectFromResultSet(ResultSet rs, Object obj, String[] props) throws SQLException {
for (int i=0; i<props.length; i++) {
Object value = null;
Class theClass = null;
try {
theClass = PropertyUtils.getPropertyType(obj, props[i]); if (theClass.getName().equals("int")) {
value = new Integer(rs.getInt(props[i])); } else if (theClass.getName().equals("long")) {
value = new Long(rs.getLong(props[i])); } else if (theClass.getName().equals("boolean")) {
value = new Boolean(rs.getBoolean(props[i])); } else if (theClass.getName().equals("float")) {
value = new Float(rs.getFloat(props[i])); } else if (theClass.getName().equals("double")) {
value = new Double(rs.getDouble(props[i])); } else if (Class.forName("java.lang.String").isAssignableFrom(theClass)) {
value = rs.getString(props[i]); } else if (Class.forName("java.sql.Timestamp").isAssignableFrom(theClass)) {
value = rs.getTimestamp(props[i]); } else if (Class.forName("java.sql.Date").isAssignableFrom(theClass)) {
value = rs.getDate(props[i]); } else if (Class.forName("java.sql.Time").isAssignableFrom(theClass)) {
value = rs.getTime(props[i]); } else if (Class.forName("java.util.Date").isAssignableFrom(theClass)) {
Timestamp t = rs.getTimestamp(props[i]);
if (t==null)
value = null;
else
value = new java.util.Date(t.getTime()); } else {
throw new Exception("un-supported class : " + theClass.getName());
}
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - can not read property named [" + props[i] + "] - " + e.getMessage();
Debug.error(msg);
throw new SQLException(msg);
} try {
if (value!=null) PropertyUtils.setProperty(obj, props[i], value);
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - no property named [" + props[i] + "] in obj can be write";
Debug.error(msg);
throw new SQLException(msg);
}
/**
* 从给定的 ResultSet 里按指定的 properties 读出数据填写到给定的 object 中。<br>
* 根据 obj 中 property 的数据类型决定读取数据时所使用的类型。<br>
* 现在支持的数据类型包括 int、long、boolean、float、double、String、sql.Timestamp、sql.Date、sql.Time、util.Date<br>
* NOTE: 要求 object 中 property 的名字与结果集中的字段名一致。<br>
* HINT: 结果集中的字段名是 case-insensitive 的,而 bean object 是 case-sensitive 的<br>
*/
protected void readObjectFromResultSet(ResultSet rs, Object obj, String[] props) throws SQLException {
for (int i=0; i<props.length; i++) {
Object value = null;
Class theClass = null;
try {
theClass = PropertyUtils.getPropertyType(obj, props[i]); if (theClass.getName().equals("int")) {
value = new Integer(rs.getInt(props[i])); } else if (theClass.getName().equals("long")) {
value = new Long(rs.getLong(props[i])); } else if (theClass.getName().equals("boolean")) {
value = new Boolean(rs.getBoolean(props[i])); } else if (theClass.getName().equals("float")) {
value = new Float(rs.getFloat(props[i])); } else if (theClass.getName().equals("double")) {
value = new Double(rs.getDouble(props[i])); } else if (Class.forName("java.lang.String").isAssignableFrom(theClass)) {
value = rs.getString(props[i]); } else if (Class.forName("java.sql.Timestamp").isAssignableFrom(theClass)) {
value = rs.getTimestamp(props[i]); } else if (Class.forName("java.sql.Date").isAssignableFrom(theClass)) {
value = rs.getDate(props[i]); } else if (Class.forName("java.sql.Time").isAssignableFrom(theClass)) {
value = rs.getTime(props[i]); } else if (Class.forName("java.util.Date").isAssignableFrom(theClass)) {
Timestamp t = rs.getTimestamp(props[i]);
if (t==null)
value = null;
else
value = new java.util.Date(t.getTime()); } else {
throw new Exception("un-supported class : " + theClass.getName());
}
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - can not read property named [" + props[i] + "] - " + e.getMessage();
Debug.error(msg);
throw new SQLException(msg);
} try {
if (value!=null) PropertyUtils.setProperty(obj, props[i], value);
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - no property named [" + props[i] + "] in obj can be write";
Debug.error(msg);
throw new SQLException(msg);
}
解决方案 »
- 分页传递参数报错 jsp netbeans
- 类中的 一个公共方法,加上static修饰和不加对性能有什么影响没有?
- DWR中的validator.js在哪里?
- 如何设置eclipse找出相关文字
- java连接sqlserver No suitable driver的问题
- 求助:Tomcat 6.0下的jspSmartUpload安装??
- 在 超链接 中能不能提交参数,或者使一个变量负值
- 我要把一个带有“的字符串赋个STRING变量要怎么做?
- 我快疯了,请高手救救我
- cookie过期无效
- 首先预祝大家中秋节快乐!我的jb7中,我想创建一个JSP工程,New -> Web -> JavaServer Page中的JSP创建项无效,是不是有相关的控件要下载
- 数据库中正常,在JSP中显示好象为十六进制数,帮忙解决
回头好好谢你。
你能否再详细地给我说明一下,如何从给定的 ResultSet 里按指定的 properties 读出数据填写到给定的 object 中,是指 obj = rs.getObject(i)吗?PropertyUtils.getPropertyType(obj, props[i]) 和setProperty(obj, props[i])这两个类你能否给我一份参考一下, 尤其是 setProperty(obj, props[i])该如何写?
望能再给指导!!! 方便的话发邮件给我,邮箱: [email protected].
万分感谢!!!