当前位置: 代码迷 >> SQL >> 运作期从ibatis配置文件中获取sql 的两种方法
  详细解决方案

运作期从ibatis配置文件中获取sql 的两种方法

热度:70   发布时间:2016-05-05 15:15:41.0
运行期从ibatis配置文件中获取sql 的两种方法

1.通过SqlMapClientDaoSupport,SqlMapClientImpl,MappedStatement,Sql,RequestScope等ibatis提供的类

?

/**	 * 获得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提供的类

/**	 * 获得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;	}
?

?

  相关解决方案