目前我使用JdbcTemplate.update()
方法执行存储过程,基本上更新并插入一些记录
不回报任何东西。
但我不确定使用update()
方法执行存储过程是否是一个好习惯。使用该方法有任何缺点吗?
还是我必须使用execute()
方法?我试图避免实现execute(),因为它需要在我的应用程序中进行大量的代码更改。
代码:
jdbcTemplate.update("call test_stored_proc(? , ?)", new Long[] {
userId, statusId });
答案 0 :(得分:0)
您可以使用任何您想要的。 _do_something_avx
是一种通用API,可以运行任何内容,并让您知道它返回的结果类型(结果集或受影响的行数)。 execute
是一个特殊版本,用于返回受影响的行或根本不返回任何内容的查询。
update
最终将查询委托给JdbcTemplate
。
executeUpdate(String sql): 执行给定的SQL语句,该语句可以是INSERT,UPDATE或DELETE语句,也可以是不返回任何内容的SQL语句,例如SQL DDL语句。
执行(String sql): 执行给定的SQL语句,该语句可能返回多个结果。
答案 1 :(得分:0)
如果您使用的是基本的Spring jdbc支持,则应使用SimpleJdbcCall来调用存储过程,因为这可以帮助您处理与这些类型的调用相关联的元数据。见http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html
但我个人在Spring Data JPA中使用了@Procedure注释,这让事情变得容易多了。见http://docs.spring.io/spring-data/jpa/docs/1.10.4.RELEASE/reference/html/#jpa.stored-procedures
所以你的代码改为调用接口上的方法,如下所示:
@Procedure("test_stored_proc")
public void callIt(long userId, statusId);
请注意,您必须在应用中设置Spring JPARepository支持才能使其正常工作。