我正在尝试使用 Springs 的 NamedParameterJdbcTemplate 来调用一个 Oracle 存储过程,该存储过程具有两个带有设置值的输入参数,并且该存储过程返回 8 个具有多个列/行的游标。我能够使用 Spring 的 SimpleJdbcCall 使用以下代码调用存储过程(敏感信息已更改):
SqlParameter con_num = new SqlParameter("con_num",12); //12 is VARCHAR TYPE
SqlParameterValue con_num2 = new SqlParameterValue(con_num, "859999");
SqlParameter in_date = new SqlParameter("in_date",12);
SqlParameterValue in_date2 = new SqlParameterValue(in_date, "20160628");
SqlOutParameter account_cur = new SqlOutParameter("account_cur", -10); //-10 is ORACLE CURSOR TYPE
SqlOutParameter fund_cur = new SqlOutParameter("fund_cur", -10);
SqlOutParameter notes_cur = new SqlOutParameter("notes_cur", -10);
SqlOutParameter withdrawal_cur = new SqlOutParameter("withdrawal_cur", -10);
SqlOutParameter contract_cur = new SqlOutParameter("contract_cur", -10);
SqlOutParameter pin_cur = new SqlOutParameter("pin_cur",-10);
SqlOutParameter …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Boot 来运行 API。我想在反序列化之前验证用户请求参数,以防止 Jackson 抛出反序列化异常。我的想法是最好在没有异常处理的情况下进行验证,但如果您认为我错了,请告诉我。
现在,我制作了一个带有@ControllerAdvice注释的异常处理程序控制器,用于在异常冒泡给用户之前捕获异常,但是有没有办法在杰克逊反序列化之前验证用户输入以检查错误?
我开始尝试使用 spring 验证,但是如果我编写一个自定义验证器并注释请求参数,@Validate验证是否会在反序列化之前进行?春季验证是正确的选择吗?
我研究了使用注释进行验证(JSR 380),但我认为我需要对验证进行更多控制,因此这就是我编写自己的自定义验证器的原因。
我想我可以编写一个自定义反序列化器来调用我的自定义验证器,但这是最好的方法。我正在寻找最佳实践和良好的验证策略。
在此先感谢您的帮助。