欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI

页面树结构

欢迎使用普元文档库

Skip to end of metadata
Go to start of metadata

【场景描述】 

目前开发中遇到需要获取命名SQLSQL内容及其对应的入参的问题,比如希望借助已经开发好的命名SQL,但使用JDBC或者SpringJdbcTemplate来执行SQL

普元开发平台除了封装iBatis的日常使用API,还提供相对底层的API来解决上述问题

【关键代码】

 

public static DataObject getSqlAndParamByNameSqlId(String nameSqlId, Object param) {

             SessionScope sessionScope = new SessionScope();

             sessionScope.incrementRequestStackDepth();

             RequestScope requestScope = new RequestScope();

             requestScope.setSession(sessionScope);

             SqlMapClientImpl sci = (SqlMapClientImpl) SqlMapClientManager.INSTANCE.getClient();

             MappedStatement ms = sci.getMappedStatement(nameSqlId);

             ms.initRequest(requestScope);

             ms.getCacheKey(requestScope, param);

             Sql sql = ms.getSql();

             String sqlString = sql.getSql(requestScope, param);

             Object[] sqlParams = sql.getParameterMap(requestScope, param).getParameterObjectValues(requestScope, param);

            

             DataObject sqlObj = DataObjectUtilWy.createEmptyDataObject();

             sqlObj.setString("sql", sqlString); // 已经使用占位符(?)替换了参数列表后的SQL

             sqlObj.set("params", sqlParams); // 占位符对应的SQL入参列表

             return sqlObj;

       }

}

完整代码及示例参见基于普元开发平台获取iBatis的SQL及其入参的方法.docx