运行期从ibatis配置文件中获取sql 的两种方法
1.通过SqlMapClientDaoSupport,SqlMapClientImpl,MappedStatement,Sql,RequestScope等ibatis提供的类
Java代码- /**
- * 获得sql
- * @param db 通过它获取SqlMapClient
- * @param param sql里面的参数
- * @param sqlName Statement的ID
- * @return
- */
- public String getCurrSql(DBOperation db,Map<String, String> param,String sqlName) {
- String sql = null;
- SqlMapClientImpl sqlmap = (SqlMapClientImpl) db.getSqlMapClient();
- MappedStatement stmt = sqlmap.getMappedStatement(sqlName);
- Sql stmtSql = stmt.getSql();
-
- RequestScope requestScope = new RequestScope();
- requestScope.setStatement(stmt);
- sql = stmtSql.getSql(requestScope, param);
- return sql;
- }
- /**
- * 获得sql
- * @param db 通过它获取SqlMapClient
- * @param param sql里面的参数
- * @param sqlName Statement的ID
- * @return
- */
- public String getCurrSql(DBOperation db,Map<String, String> param,String sqlName) {
- String sql = null;
- SqlMapClientImpl sqlmap = (SqlMapClientImpl) db.getSqlMapClient();
- MappedStatement stmt = sqlmap.getMappedStatement(sqlName);
- Sql stmtSql = stmt.getSql();
-
- RequestScope requestScope = new RequestScope();
- requestScope.setStatement(stmt);
- sql = stmtSql.getSql(requestScope, param);
- return sql;
- }
复制代码 2.通过SqlMapExecutorDelegate,MappedStatement,Sql,RequestScope等ibatis提供的类
Java代码- /**
- * 获得sql
- * @param db 通过它获取SqlMapClient
- * @param param sql里面的参数
- * @param sqlName Statement的ID
- * @return
- */
- public String getCurrSqlTwo(DBOperation db,Map<String, String> param,String sqlName) {
- SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)
- (db.getSqlMapClient())).getDelegate();
- MappedStatement ms = delegate.getMappedStatement(sqlName);
- Sql sql=ms.getSql();
- RequestScope requestScope = new RequestScope();
- requestScope.setStatement(ms);
- String sqlStr = sql.getSql(requestScope,param);
- return sqlStr;
- }
复制代码 |