JDBC返回ResultSet结果经过java反射获得java对象

咱们先来写一个不用框架,用JDBC来操做呢数据库,下面写一个简单的例子:html

就是这么简单的一段代码,而后就是想从数据库中获取相应的字段,就用get和set方法来处理,返回一个对象,写起来就是麻烦,不通用。java

由于java有反射的功能,因此能够抽取出来,写个通用的方法,固然这里参考了其余大神的写法,看了一些博客。数据库

这里先简单处理这几种经常使用类型,其余的其实能够后续再加上。这里主要依赖反射obj.getDeclaredField(name).getType()获取字段类型,而后经过obj.getMethod("set" + replace, type)来找到数据库java对象的这个set方法,最终method.invoke(newInstance, rs.getString(i))来附值,这么一想,若是查出来是一个很大的list的,那么该怎么优化呢?框架

先来使用一下,这个写的小工具,就能够不用繁琐的get和set方法:工具

输出:优化

上面是经过对象里面的set和get方法来设置变量的值,这样写起来感受比较麻烦,直接用Field的set方法是否是更加简单一点,可是这样写,访问的是public对象,因此。。3d

这里补充一下ResultSetMetaData接口都有哪些信息htm

可使用此对象得到列的数目和类型以及每一列的名称:对象

  • getColumnCount(); 返回 ResultSet 中的列数。 
  • getColumnName(int); 返回列序号为 int 的列名。 
  • getColumnLabel(int); 返回此列暗含的标签。 
  • isCurrency(int); 若是此列包含带有货币单位的一个数字,则返回 true。 
  • isReadOnly(int); 若是此列为只读,则返回 true。 
  • isAutoIncrement(int); 若是此列自动递增,则返回 true。这类列一般为键,并且始终是只读的。 
  • getColumnType(int); 返回此列的 SQL 数据类型。这些数据类型包括 

参考;https://www.cnblogs.com/ooo0/p/10225311.htmlblog

相关文章
相关标签/搜索