gpt4 book ai didi

java - 如何在子句行为中自定义 NamedParameterJdbcTemplate?

转载 作者:行者123 更新时间:2023-11-30 03:57:16 26 4
gpt4 key购买 nike

我正在使用超酷的 jdbcTemplate(更具体地说是 NamedParameterJdbcTemplate)来运行带有 IN 子句的查询。然而,我希望查询的列表是一个枚举,因此我收到错误:“转换中的数据类型不兼容”。

我注意到,每次用这个枚举查询时,我都必须调用 toString() 。有没有办法告诉 jdbcTemplate 获取列表中对象的 String 值?

最佳答案

我认为您需要某种覆盖:

public class MyNamedParameterJdbcTemplate extends NamedParameterJdbcTemplate {

public MyNamedParameterJdbcTemplate(final DataSource dataSource) {
super(dataSource);
}

@Override
public <T> T execute(final String sql, final Map<String, ?> paramMap, final PreparedStatementCallback<T> action) throws DataAccessException {
final Map<String, Object> newParam = new HashMap<>();
for (final Map.Entry<String, ?> entry : paramMap.entrySet()) {
if (entry instanceof Enum<?>) {
// param is an enum
newParam.put(entry.getKey(), ((Enum) entry).toString());
} else {
newParam.put(entry.getKey(), entry.getValue());
}
}
return super.execute(sql, newParam, action);
}
}

注意:未经测试,Guava Maps.transformValues() 也是一个选项

关于java - 如何在子句行为中自定义 NamedParameterJdbcTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com