ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 组件源码 ``` /** * <b>方法描述:</b> 执行指定方法 <br/> * <b>创建者:</b> admin <br/> * <b>创建时间:</b> 2020-09-11 16:12:11 <br/> * * @param poolName * 入参|数据源|{@link java.lang.String} * @param className * 入参|执行类名|{@link java.lang.String} * @param method * 入参|方法名称|{@link java.lang.String} * @param paramList * 入参|参数列表|{@link java.util.List} * @param result * 出参|返回值|{@link Object} * @return -1 异常<br/> * 0 失败<br/> * 1 成功<br/> */ @Component(label = "执行指定方法", style = "判断型", type = "同步组件", comment = "执行自定义的数据库操作方法,传入参数:执行类、执行方法和方法参数列表。不能存在同名方法", version = "1.0.0", deprecated = false, author = "admin", date = "2020-09-11 04:12:11") @InParams(param = {@Param(name = "poolName", comment = "数据源", type = java.lang.String.class), @Param(name = "className", comment = "执行类名", type = java.lang.String.class), @Param(name = "method", comment = "方法名称", type = java.lang.String.class), @Param(name = "paramList", comment = "参数列表", type = java.util.List.class)}) @OutParams(param = {@Param(name = "result", comment = "返回值", type = Object.class)}) @Returns( returns = {@Return(id = "-1", desp = "异常"), @Return(id = "0", desp = "失败"), @Return(id = "1", desp = "成功")}) public static ResultBase P_customMethod(String poolName, String className, String method, List paramList) { try { AppLog.debug("数据库 执行指定方法,poolName={},className={},method={},paramList={}", poolName, className, method, paramList); if (StringUtil.isEmpty(className)) { return ResultBase.newFailureResult("TPTD0027", "参数错误:执行类参数【className】不能为空"); } if (StringUtil.isEmpty(method)) { return ResultBase.newFailureResult("TPTD0028", "参数错误:执行类参数【method】不能为空"); } setDatasource(poolName); Object maper = BundleUtil.getService(className); if (maper == null) { return ResultBase.newFailureResult("TPTD0010", "错误:当前环境未找到[" + className + "]的可用数据库操作Mapper 实例"); } Method m = getMethod(maper.getClass(), className, method); if (m != null) { AppLog.debug("开始执行相应的Mapper 方法:" + method); Object obj = null; if (paramList == null || paramList.isEmpty()) obj = m.invoke(maper); else obj = m.invoke(maper, paramList.toArray()); return ResultBase.newSuccessResult(obj); } } catch (Exception e) { AppLog.error(e); return ResultBase.newExceptionResult("TPTD0029", "执行数据库方法错误,className=" + className + ",method=" + method + AppLog.errorMsg(e)); } return ResultBase.newFailureResult("TPTD0030", "数据库 执行指定方法 组件 中没有找到相应的执行方法。"); } ``` # 交易中组件使用方式 ![](https://img.kancloud.cn/eb/c3/ebc3683cd46b00c56427d6705ae03dfe_1870x893.png) # 参数说明及示例 ## 入口参数 数据源名称:使用的数据源名称,可以为空 执行操作类名:执行 SQL 语句的类,示例: `"data.test.test.mapper.TUserMapper"` 方法名称:执行的方法名,示例: `"selectById"` 参数列表:方法需要的参数,示例: `[1]` ## 出口参数 返回值:执行方法后返回的结果,示例: `__INNER__["result"]` > 当交易部署到微服务上时,数据源在微服务界面上配置。