
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。
提高代码重用性:存储过程可以在多个应用程序中重复使用,减少代码编写的工作量和维护成本。
/**
* 以下是部分代码
* 传递指令代码和运行动作的序号,以及传递前台参数
* @param params
* @return
*/
@PostMapping("/runProcedure"
@ResponseBody
String runProcedure(@RequestParam Map<String, Object> params{
JSONObject json=new JSONObject(;
Map<String, Object> parameters = new HashMap<String, Object> (;
String procedureName="P_CHECK_MATERIAL168"; //设置存储过程名称
procedureName=params.get("name".toString(; //动态获取存储过程名称
parameters.put("parameterName",procedureName;
List<Map<String,Object>> Procedurelist=mobileService.getProcedureParameter(parameters;
String sql="{call "+procedureName+"(" +getProcedureParameter(Procedurelist+"}";
Map<String, Object> sqlParams= new HashMap<String, Object> (;
//sqlParams 必须要动态设置存储过程需要的参数及值内容,可能动态传递过来、取存储在数据库中的信息等,否则不能运行
Map<String, Object> runParams=getProcedureMap(Procedurelist,sqlParams;
runParams.put("sql",sql;
mobileService.autoProcedure(runParams;//自动带有返回的out值内容
json.put("result","OK";
return json.toJSONString(;
}
编程笔记 » springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程/java动态调用oracle存储过程