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

运行期从ibatis配置文件中获取sql 的两种步骤

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

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

运行期从ibatis配置文件中获取sql

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

public List<UserInfo> getUserList(UserInfo userInfo) {
?? String sql = null;
?? SqlMapClientImpl sqlmap = (SqlMapClientImpl) this.getSqlMapClient();
?? MappedStatement stmt = sqlmap.getMappedStatement("getUserInfoList");
?? Sql stmtSql = stmt.getSql();
??
?? RequestScope requestScope = new RequestScope();
?? requestScope.setStatement(stmt);
?? sql = stmtSql.getSql(requestScope, userInfo);
?? System.out.println(sql);
?? return null;?
}

注:这个方法我是写在dao中的,该dao extends SqlMapClientDaoSupport,所以上述就可以直接this调用getSqlMapClient()方法,

2.通过SqlMapExecutorDelegate,MappedStatement,Sql,RequestScope等ibatis提供的类

public List<UserInfo> getUserList(UserInfo userInfo) {
?? SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)
??? (getSqlMapClientTemplate().getSqlMapClient())).getDelegate();?????
???
?? MappedStatement ms = delegate.getMappedStatement("getUserInfoList");???
?? Sql sql=ms.getSql();?
?? RequestScope requestScope = new RequestScope();
?? requestScope.setStatement(ms);
?? String sqlStr = sql.getSql(requestScope,userInfo);?
?? System.out.println(sqlStr);?
}

注:这两个例子中用到的类都是ibatis官方jar文件中的,快速导入即可,"getUserInfoList"为ibatis的xml文件中配置的id,getSql(,)
中第二个参数就是要传递的参数对象。

上述写法完全可以再简化,上述只是简单介绍,可供参考.......

  相关解决方案