在运行时获取ibatIS执行的sql
2014-03-24 19:40
393 查看
如下方法可以在运行时获取ibatIS执行的sql:
需引入如下4个namespace:
调用方式:
利用此方法可以监测到运行时的sql语句,但如果有参数传入,则不会获取到参数的值。
若database为sqlserver, 也可以利用sqlserver的profiler工具(sqlserver2000里叫事件探查器),进行监测。当然,这需要您具有相关权限。与上面的方法不同,这里监测到的sql是最终的可执行的sql语句。
/// <summary> /// 获取运行时的sql语句 /// </summary> /// <param name="readOrWriterName">读/写配置文件</param> /// <param name="statementName">sqlmap中的sql位置</param> /// <param name="paramObject">执行statementName对应的sql时传递的参数</param> /// <returns></returns> public string GetRuntimeSql(string readOrWriterName, string statementName, object paramObject) { string result = string.Empty; ISqlMapper sqlMapper = new DomSqlMapBuilder().Configure(readOrWriterName); try { IMappedStatement statement = sqlMapper.GetMappedStatement(statementName); if (!sqlMapper.IsSessionStarted) { sqlMapper.OpenConnection(); } RequestScope scope = statement.Statement.Sql.GetRequestScope(statement, paramObject, sqlMapper.LocalSession); result = scope.PreparedStatement.PreparedSql; } catch (Exception ex) { result = "获取SQL语句出现异常:" + ex.Message; } return result; }
需引入如下4个namespace:
using IBatisNet.DataMapper; using IBatisNet.DataMapper.Configuration; using IBatisNet.DataMapper.MappedStatements; using IBatisNet.DataMapper.Scope;
调用方式:
string sql = this.GetRuntimeSql("ModifyReader.config", "InOutStockDao.AddOutput", m);
利用此方法可以监测到运行时的sql语句,但如果有参数传入,则不会获取到参数的值。
若database为sqlserver, 也可以利用sqlserver的profiler工具(sqlserver2000里叫事件探查器),进行监测。当然,这需要您具有相关权限。与上面的方法不同,这里监测到的sql是最终的可执行的sql语句。
相关文章推荐
- 在运行时获取ibatIS执行的sql
- iBATIS.net获取运行时sql语句
- iBATIS.net获取运行时sql语句
- 获取sql语句的执行情况近来我的oracle数据库(9201)运行慢
- ibatis获取运行时的动态SQL语句及其参数
- IBatis.Net获取执行的Sql语句
- mybatis获取运行时最终执行SQL
- iBATIS获取真正执行SQL
- mybatis获取运行时最终执行SQL
- iBATIS.net获取运行时sql语句
- iBATIS.net获取运行时sql语句
- ibatis动态获取执行SQL和参数
- 使用SQL调优顾问的关键在于获取需要优化的SQL在执行时对应的sql id
- 批量查看当前运行sql的执行计划脚本
- iBATIS SQL Maps之用SqlMapClient执行SQL语句。
- laravel 中获取执行的sql语句
- IBatis 怎样直接执行SQL语句
- ThinkPHP中的getLastSql函数---获取上次执行的SQL语句
- 运行执行sql文件脚本的例子
- 【Java 路径】运行可执行jar包获取相关路径