dexcoder-assistant
dexcoder-assistant copied to clipboard
调整建议
querySingleResultForSql
mapList == null || mapList.isEmpty() ? null : mapList.iterator().next()
这样会不会不太合适,如果有多条只取第一条,jdbctemplate 直接抛出结果不唯一异常是否好一点
public <T> List<T> queryListForSql(String refSql, Class<T> elementType) { List<Map<String, Object>> mapList = this.queryListForSql(refSql, "", EMPTY_OBJECT_ARRAY); return mapToBean(mapList, elementType);} 更改为这个
return jdbcTemplate.query(refSql, new BeanPropertyRowMapper<T>(elementType));
- jdbcTemplate的queryForObject方法默认在没有结果或结果不唯一时会抛出异常,但是根据我自己的项目经验来看,实际使用中当没有结果时根本不想它有异常出现.至于结果超过一条不唯一时抛出异常,这个可以考虑加上.
- 自定义sql考虑到一般都是多表联查等操作,有可能并没有对应的elementType类,所以一开始并没有List queryListForSql(String refSql, Class elementType)这个方法,后来加上时想当然的在原有的方法上进行了扩展加工,现在看来代码是有些多余.
JdbcDao目前也在修改更新中,例如支持自定义的主键生成器,支持long以外的主键类型等.后面会对此进行修改,也会对BeanPropertyRowMapper进行重写扩展,因为它不支持自定义的注解属性转换.
感谢提出建议!