`
xingkaistart
  • 浏览: 39743 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

根据sqlId获取Ibatis配置文件中的SQL

阅读更多
import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
import com.ibatis.sqlmap.engine.mapping.sql.Sql;
import com.ibatis.sqlmap.engine.scope.SessionScope;
import com.ibatis.sqlmap.engine.scope.StatementScope;
import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;
	/**
	 * 获取SQL
	 * ibatais根据sqlMap的Id获取sql语句
	 * @param sqlId 是xml文件配置的ID
	 * @return sql语句  以“$”注入的会自动转换,“#”不会
	 */
	public static String getSql(SqlMapClientImpl sqlclientImpl,String sqlId,Object params){
		
		String sqlStr = "";
		/**获取隐身对象*/
		MappedStatement stmt = sqlclientImpl.getMappedStatement(sqlId); 
		Sql sql = stmt.getSql();
		/**获取规则*/
		SessionScope sessionScope = new SessionScope();   
		sessionScope.incrementRequestStackDepth();   
		StatementScope statementScope = new StatementScope(sessionScope);   
		stmt.initRequest(statementScope);   
		/**获取sql映射对象*/
		sqlStr = sql.getSql(statementScope, params);
		
		log.debug("sqlMap:"+sqlId);
		log.debug("sql:"+sqlStr);
		
		return sqlStr;
	}



以上便是获取sql语句的方法。
也许有些地方看不明了,在这里增加一点点解释。
传参:
      SqlMapClientImpl 就是指的我们平时使用的 SqlMapClient 当然在传这个参数需要强制类型转换 如: SqlMapClientImpl temp = (SqlMapClientImpl)sqlMapClient;
      String sqlId 指的 就是 我Ibatais.sqlMap.xml中定义的SQL的Id
     Object params 这个参数指的是sqlMap.xml中 如<insert parameterClass="params">..</insert>的parameterClass传入的对象,如果没有可以为null。





分享到:
评论

相关推荐

    jxl结合IBATIS导出EXCEL

    jxl结合IBATIS,导出EXCEL。读取EXCEL模板,把数据写到新的EXCEL中。sql语句中要起别名,别名第一位为字母,第二位包括第二位要是整数数字,这个数字决定...EXCEL模板中的工作表名要与IBATIS配置文件中的ID名字一致。

    ibatis 开发指南(pdf)

    在 CLASSPATH 中新建log4j.properties 配置文件,内容如下: log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log...

    xorm:xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常正确。本库是基于原版xorm的定制增强版本,为xorm提供类似ibatis的配置文件及动态SQL支持,支持AcitveRecord操作

    Having,Table,Sql,Cols等函数和结构体等方式作为条件支持级联加载结构支持类ibatis方式配置SQL语句(支持XML配置文件,json配置文件,xsql配置文件,支持 , , 模板和自定义实现配置多种方式)支持动态SQL功能...

    mybatis超级资料包

    1、mybatis(ibatis3.0)所需要的jar包 ...5、部分sql文件参考样例(比如if的另类用户,id in('a','b')转换为(and id =? or id =? or id =? ... ) 总之 抛砖引玉) 6、文件中有我的联系方式,希望感兴趣的朋友一起切磋。

    springmybatis

    1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做...

    基于EXT SSI的简单树实现

    &lt;description&gt;struts2初始配置文件 &lt;param-name&gt;config &lt;param-value&gt;conf/struts/struts.xml &lt;filter-name&gt;struts2 &lt;url-pattern&gt;/* 可以看到配置中,通过过滤器配置将struts引入。同时...

    Spring面试题

    类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4. 说下Hibernate的缓存...

    Java面试宝典2010版

    12、在weblogic中发布ejb需涉及到哪些配置文件 13、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置? 14、如何查看在weblogic中已经发布的EJB? 十. EBJ部分 1、EJB是基于哪些技术...

    最新Java面试宝典pdf版

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    Java面试笔试资料大全

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    JAVA面试宝典2010

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    Java面试宝典-经典

    给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. ...

    java面试题大全(2012版)

    如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...

    Java面试宝典2012版

    如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计...

    java面试宝典2012

    如何书写一个 one to many 配置文件. 133 11、iBatis与Hibernate有什么不同? 133 12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? ...

    Java面试宝典2012新版

    如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...

    MyBatis Generator

    3、配置generatorConfig.xml配置文件,详细如下 [html] view plain copy &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator ...

    JdbcTemplateTool.zip

    比如你没法像hibernate那样直接传一个对象给它让他拆分成sql并保存起来,当然这也是可以理解的,毕竟它并没有要求你去写 hbm.xml 文件所以无法知道你哪些字段要映射,哪些不要等等。又比如JdbcTemplate 可以帮忙把一...

Global site tag (gtag.js) - Google Analytics