Dbutil是一个非常小的类包, 无需花费太多时间去阅读它的doc, 核心类(接口)为QueryRunner 和ResetSetHandler。
ResetSetHandler 的实现类有很多种, 涉及数组, map , javabean, 等等, 所有的实现类都接受一个RowProcessor类型的参数来实现数据列向对象的转化。其中RowProcessor的默认实现类为BasicRowProcessor, 用户也可以自己实现RowProcessor。
BasicRowProcessor使用BeanProcessor来完成ResultSet中的值向JavaBean的映射。前提要求列名和bean属性名必须一致。
但是在大部分情况下,数据库的列名中常含有一个些特殊字符,这些字符在java命名规约中又不能使用,针对上述情况,有如下2种解决办法:
1)SQL语句中使用as 。 如 select Na#me as name;
2) 继承BeanProcessor并覆盖mapColumnsToProperties()以便跳过那些违背java命名规约的字符。
BeanProcessor.java
public Object toBean(ResultSet rs Class type) {
//确定column要转化成的类型,并以数组形式存储。
mapColumnToProperties();
//组装bean并返回
createBean() {
// 依照前面数组中存储的形式,将column进行相应的转化
processColumn()
//运用反射 设值
callSetter()
}
}
ResetSetHandler 的实现类有很多种, 涉及数组, map , javabean, 等等, 所有的实现类都接受一个RowProcessor类型的参数来实现数据列向对象的转化。其中RowProcessor的默认实现类为BasicRowProcessor, 用户也可以自己实现RowProcessor。
BasicRowProcessor使用BeanProcessor来完成ResultSet中的值向JavaBean的映射。前提要求列名和bean属性名必须一致。
但是在大部分情况下,数据库的列名中常含有一个些特殊字符,这些字符在java命名规约中又不能使用,针对上述情况,有如下2种解决办法:
1)SQL语句中使用as 。 如 select Na#me as name;
2) 继承BeanProcessor并覆盖mapColumnsToProperties()以便跳过那些违背java命名规约的字符。
BeanProcessor.java
public Object toBean(ResultSet rs Class type) {
//确定column要转化成的类型,并以数组形式存储。
mapColumnToProperties();
//组装bean并返回
createBean() {
// 依照前面数组中存储的形式,将column进行相应的转化
processColumn()
//运用反射 设值
callSetter()
}
}