gpt4 book ai didi

java - mapsqlparametersource 与 java.util.map

转载 作者:行者123 更新时间:2023-11-30 07:56:08 27 4
gpt4 key购买 nike

我在 spring 文档中读到 MapSqlParameterSource 只是 Map 的包装器。使用MapSqlParameterSource代替Map有什么优点?

public int countOfActorsByFirstName(String firstName) {

String sql = "select count(*) from T_ACTOR where first_name = :first_name";

SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);

return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);
}




public int countOfActorsByFirstName(String firstName) {

String sql = "select count(*) from T_ACTOR where first_name = :first_name";

Map<String, String> namedParameters = Collections.singletonMap("first_name", firstName);

return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);
}

最佳答案

MapSqlParameterSource 只是 LinkedHashMap 的装饰器,如果您检查 MapSqlParameterSource,您将看到以下内容:

private final Map<String, Object> values = new LinkedHashMap<String, Object>();

使用map或spring提供的实现实际上并没有多大的好处。

如果您深入了解代码,可以使用代码下方的addValue:

public MapSqlParameterSource addValue(String paramName, Object value) {
Assert.notNull(paramName, "Parameter name must not be null");
this.values.put(paramName, value);
if (value instanceof SqlParameterValue) {
registerSqlType(paramName, ((SqlParameterValue) value).getSqlType());
}
return this;
}

因此,如您所见,addValue 返回相同的对象,您可以使用该对象(如果您愿意)进行流畅的方法调用,例如:

.addValue("a", 1).addValue("b", 2)...

因此,使用MapMapSqlParameterSource只是一个品味问题

关于java - mapsqlparametersource 与 java.util.map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565862/

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