运行期从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(,)
中第二个参数就是要传递的参数对象。

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

猜你喜欢

转载自luo476979657.iteye.com/blog/2047454
今日推荐