`

IBatis如何获取解析后的SQL语句和占位符参数

 
阅读更多

 获取IBatis中指定SQLID的SQL解析结果(根据传入参数解析后的SQL语句和占位符参数数组)

 

SqlMapClient本身是没有方法获取SQL的解析结果的,必须将SqlMapClient对象强制转换成SqlMapClientImpl类型,然后传入SQLID和参数就可以获取到了,具体如下代码(sqlId为要解析的SQL对应的ID,params为传入的参数):

 

 

SqlMapClientImpl sci = (SqlMapClientImpl)this.sqlMapClient;
MappedStatement ms = sci.getMappedStatement(sqlId);
		
Sql sql = ms.getSql();  
      
SessionScope sessionScope = new SessionScope();     
sessionScope.incrementRequestStackDepth();     
StatementScope statementScope = new StatementScope(sessionScope);     
ms.initRequest(statementScope);    
ms.getCacheKey(statementScope, params);
       
String sqlString = sql.getSql(statementScope, params);  
        
Object[] sqlParam = sql.getParameterMap(statementScope, params).getParameterObjectValues(statementScope, params);
分享到:
评论
1 楼 di1984HIT 2014-03-18  
写的不错,学习了、。

相关推荐

    sql语句中用问号代替参数

    `)作为参数占位符是一种常见的做法,尤其是在编程语言如Java中与数据库交互时。这种方式被称为预编译语句或参数化查询,它具有重要的安全性和性能优势。 ### SQL参数化查询的概念 参数化查询允许将变量值插入到SQL...

    ibatis常用sql语句

    在iBATIS中,当输入参数为单个值时,如示例中的`long`类型,可以使用`<delete>`标签结合`#value#`占位符来构建SQL语句。这里的`#value#`会被实际的参数值替换,从而执行具体的数据库删除操作。这种简单的参数绑定...

    ibatis sql 语句的编写

    本文将详细介绍ibatis中的SQL语句编写方法,主要包括查询、插入、更新和删除等基本操作,并通过一个具体的例子来加深理解。 #### 二、ibatis简介 Ibatis是一个基于Java的持久层框架,它支持定制化SQL、存储过程...

    ibatis常用的sql

    其中,`#accessLogId#`, `#memberId#`等均为占位符,表示将通过传入的对象获取相应的属性值并替换到SQL语句中。 ### 三、带HashMap参数的查询操作 第三条SQL语句是一个带`HashMap`参数的查询语句: ```xml ...

    ibatis实现原理解析

    4. 参数绑定:Ibatis将方法的参数值与SQL语句中的占位符进行匹配和绑定。 5. 数据库交互:Ibatis执行SQL语句,与数据库进行交互。 6. 结果映射:将数据库返回的结果自动映射到Java对象,无需手动处理ResultSet。 ...

    使用P6spy打印ibatis执行的SQL语句

    - **检查参数绑定**:看到SQL语句中的占位符被实际值替换的过程,有助于排查因参数传递错误导致的问题。 - **对比不同SQL的性能**:比较不同SQL语句的执行效率,优化查询设计。 总之,P6Spy是一个强大的工具,可以...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    MyBatis通过动态SQL映射文件或注解来将Java代码与SQL语句关联起来,它的核心功能包括SQL语句的构建、参数绑定和结果映射。在默认情况下,MyBatis并不会直接打印出执行的SQL语句,因此我们需要开启日志功能以获取这些...

    [iBATIS]sql转换工具

    - **参数映射优化**:根据目标数据库的特性调整参数绑定方式,如占位符、问号等。 - **性能优化**:提供性能建议,如使用JOIN代替子查询,或者调整索引等。 - **代码一致性**:确保转换后的SQL语句符合团队编码...

    ibatis-sqlmaps-2_cn

    《ibatis-sqlmaps-2_cn》将指导你如何将Java对象的属性与SQL语句中的占位符关联起来,以及如何将查询结果自动映射到Java对象。同时,教程还会讲解集合映射和自定义类型处理器的使用,这些对于处理复杂的数据结构至关...

    iBATIS SQL Maps 开发指南

    3. 参数映射:通过`<parameterMap>`定义参数对象与SQL语句中占位符的对应关系。 4. 结果集映射:使用`<resultMap>`定义查询结果到Java对象的映射规则。 三、iBATIS的主要功能 1. 自动数据类型转换:iBATIS能够自动...

    Ibatis复杂查询语句.doc

    - `parameterClass`属性定义了输入参数的类型,这里是`MemberPost`类,其中的属性如`auditStatus`、`isOpen`等对应SQL语句中的占位符`#auditStatus:NUMERIC#`、`#isOpen:NUMERIC#`等。 7. **结果映射**: - `...

    ibatis-sqlmaps详解

    2. **参数映射**:介绍如何通过元素定义参数集,并使用子元素映射Java对象的属性到SQL语句的占位符。 3. **结果映射**:详述元素的用法,用于映射SQL查询结果到Java对象,包括一对一、一对多、自定义类型转换等复杂...

    ASP.NET MVC+iBatis+SQL

    3. **参数绑定**:在iBatis映射文件中,可以使用占位符绑定动态参数,实现SQL语句的参数化,提高安全性并防止SQL注入。 综上所述,这个项目演示了如何结合ASP.NET MVC、iBatis和SQL来构建一个简单的Web应用程序。...

    iBATIS SQLMap

    - 根据方法参数,iBATIS会动态地生成SQL语句,包括处理条件判断、占位符替换等。 - 然后,iBATIS使用数据源建立与数据库的连接,并执行SQL语句。 - 最后,将执行结果映射成Java对象,返回给调用者。 4. **实际...

    ibatis开发过程取值问题

    例如,如果你在SQL语句中使用“#{table_name}”,Ibatis会尝试将这个占位符替换为实际的参数值,而使用“##{table_name}”则会将其作为一个完整的字符串保留下来,不会进行替换。 在实际的开发中,我们常常遇到如下...

    Ibatis 框架基础

    2. 参数映射:通过`<parameterMap>`(已废弃)或直接在SQL语句中使用`#{}`占位符实现。 五、Ibatis的动态SQL Ibatis支持在XML配置文件中编写动态SQL,如`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `...

    ibatis帮助文档

    6. **ParameterMapping**: 参数映射用于将Java对象的属性值绑定到SQL语句的占位符上,使得动态SQL成为可能。 7. **ResultMap**: 结果映射用于将数据库查询的结果转换为Java对象,可以处理复杂的嵌套结果和关联关系...

    iBATIS2.3及其说明文档

    4. Parameter Mapping:iBATIS提供了参数映射机制,可以将Java对象的属性值自动绑定到SQL语句的占位符上。这使得传入复杂参数变得更加方便。 5. Result Mapping:结果映射用于将数据库查询的结果转换为Java对象。你...

    iBATIS SQL Maps 入门教程.rar

    这使得传入的参数能够方便地与SQL语句中的占位符对应。 6. **结果集映射** 结果集映射用于将查询结果转换为Java对象。你可以定义一对一、一对多、多对多等复杂关系的映射,使数据处理更加直观。 7. **事务管理** ...

    ibatis基本操作数据库

    在iBatis中,我们通常通过XML配置文件或者注解来定义SQL语句,并使用占位符(例如#{}或${})来传递参数。 1. **参数绑定**:iBatis使用占位符(#{})进行参数绑定,可以防止SQL注入攻击。当使用#{paramName}时,...

Global site tag (gtag.js) - Google Analytics