[英]mybatis stored procedure call from java spring not working
我一直在尝试从Java Spring调用存储过程。 基本上,此存储过程只是将来自用户的输入插入此表中。
这是我的存储过程:
create or replace PROCEDURE TEST_ADDFT
(
FID IN RAW
, K IN VARCHAR2
, V IN VARCHAR2
) AS
BEGIN
INSERT INTO
ITCM_FT (FT_ID, KEY_ID, VALUE)
VALUES (FID, (SELECT KEY_ID FROM ITCM_KEY_VALUES
WHERE UPPER(KEY)=UPPER(K)),V);
END TEST_ADDFT;
因此,我已经设置了所有(我认为)必要的东西。 我还将存储过程放置在数据库中(为此使用了sqldeveloper)。
这是服务实现:
@Transactional(readOnly = false, propagation = Propagation.REQUIRED,
rollbackFor = Exception.class)
public void addTest(final List<TestCost> tcData)
throws Exception {
try {
for (int i = 0; i < tcData.size(); i++) {
tcData.get(i).setFtId(Utils.generateUUID());
finalTestDao.addTest(tcData.get(i).getFtId(),
tcData.get(i).getKey(), tcData.get(i).getValue());
System.out.println("-=-=-=-=-= added?");
}
} catch (Exception e) {
Log.error("Add final test error", e);
}
}
这是我的DAO:
void addTest(@Param("ftId") String ftId, @Param("key") String key,
@Param("value") String value);
DAO.xml:
<select id="addTest" parameterType="String" statementType="CALLABLE">
{
CALL TEST_ADDFT (
#{ftId, mode=IN, jdbcType=RAW},
#{key, mode=IN, jdbcType=VARCHAR2},
#{value, mode=IN, jdbcType=VARCHAR2}
)
}
</select>
我已经为TestCost对象设置了POJO,并测试了使用sqldeveloper声明的过程。
我不明白的是为什么没有调用该过程。 控制台中未显示任何错误,但是未执行服务实现的第10行(sysout语句)。 你们对此有什么想法吗? 也许我确实错过了一些配置?
谢谢您的帮助!
如果您已将tcData声明为final ...
final List<TestCost> tcData
那你为什么要更新它..?
tcData.get(i).setFtId(Utils.generateUUID());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.