gpt4 book ai didi

java - 带有 pojo 注释的 BeanPropertySqlParameterSource

转载 作者:行者123 更新时间:2023-12-02 09:42:38 24 4
gpt4 key购买 nike

我有以下内容

@Data //Lombok annotation to generate getters and setters
@Entity
public class TradeLog {
@Id
@Column(name="P_TRADE_ID")
private String tradeId;
}

tradeLog.setTradeId("1");
SqlParameterSource insertParam = new BeanPropertySqlParameterSource(tradeLog);
System.out.println(insertProc.execute(insertParam));

我收到此错误线程“main”org.springframework.dao.InvalidDataAccessApiUsageException中的异常:缺少必需的输入参数“P_TRADE_ID”

我知道我可以直接在 jdbc 模板上进行映射,但是有什么方法可以使用 java 持久性注释或类似的东西来为我处理这个问题吗?

最佳答案

JDBC模板没有提供这样的东西,但是你可以轻松地使用反射来扫描所有@Column字段并将其值填充为 MapSqlParameterSource这是 SqlParameterSource 的另一个实现。像下面这样,您可以将其包装到一个函数中以方便使用:

tradeLog.setTradeId("1");

//Create MapSqlParameterSource based on tradeLog
MapSqlParameterSource param = new MapSqlParameterSource();
for(Field field : TradeLog.class.getDeclaredFields()) {
Column column = field.getAnnotation(Column.class);

if(column != null) {
field.setAccessible(true);
param.addValue(column.name(), field.get(tradeLog));
}
}

insertProc.execute(param)

关于java - 带有 pojo 注释的 BeanPropertySqlParameterSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56940034/

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