[英]How to make a simple call to a stored procedure or function in spring mvc using JdbcTemplate
我已經閱讀了很多關於如何使用JdbcTemplate調用存儲過程的問題,有很多方法比如使用beanMapper,創建一個rowMapper,使用callableStatement,但是我看到很多人這樣說:
對於簡單的過程,您可以使用jdbcTemplate的更新方法:
jdbcTemplate.update("call SOME_PROC (?, ?)", param1, param2);
我嘗試這樣做,我的jdbcTemplate變量始終為null,這是我的存儲過程
CREATE OR REPLACE PROCEDURE addProce
(
num1 IN number,
num2 IN number,
result OUT number
)
IS
BEGIN
result := num1 + num2;
END;
/
這就是我稱之為的課程
public class UsuerDAOImpl implements UserDAO {
private JdbcTemplate jdbcTemplate;
public UsuerDAOImpl () {}
public UsuerDAOImpl (DataSource datasource) {
this.jdbcTemplate = new JdbcTemplate(datasource);
}
public int addmethodJdbc()
{
int result= 0;
int someValue= jdbcTemplate.update("addProce(?, ?, ?)", 2, 1, result);
return someValue;
}
}
我在我的類中有這個方法,它的工作原理我的jdbctemplate不是null
public void insertUser(User user) {
try {
String sql = "INSERT INTO USER"
+ "(a, b, c, d)"
+ " VALUES (?, ?, ?, ?)";
jdbcTemplate.update(sql, user.getA(),
usaurio.getB(),
usaurio.getC(),
usaurio.getD());
}
catch (DataAccessException dataAccessException)
{
dataAccessException.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
我也嘗試使用這里的函數:
CREATE OR REPLACE FUNCTION addFunct
(
num1 IN number,
num2 IN number
)
return number
IS
resultado number;
BEGIN
result := num1 + num2;
return (result);
END;
/
但仍然不工作我的jdbcTemplate也是null
我已經知道如何用其他方式調用它們,但我想知道如何以這種簡單的方式調用它們
jdbcTemplate.update("call SOME_PROC (?, ?)", param1, param2);
使用SimpleJdbcCall#withProcedureName()
來調用存儲過程。 將存儲過程的名稱作為參數傳遞。
例如你的方法:
public int addmethodJdbc() {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("addFunct");
SqlParameterSource in = new MapSqlParameterSource().addValue("num1", 2).addValue("num2", 1);
Map<String, Object> out = jdbcCall.execute(in)
int result = (Integer)out.get("result");
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.