iBatis 与 myBatis 调用存储过程方式 1.0 2.0 3.0 之间的区别

sqlMapConfig.xml 中的异同.

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

DOCTYPE

sql-map-config.dtd

sql-map-config-2.dtd

ibatis-3-config.dtd

configuration标签

<sql-map-config>

</sql-map-config>

<sqlMapConfig>

</sqlMapConfig>

<configuration>

</configuration>

sqlMap标签

<sql-map recource../>

<sqlMap recource../>

<mappers>

<mapper recource.. />

</mappers>

 

sqlMap 映射中的异同

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

DOCTYPE

sql-map.dtd

sql-map-2.dtd

ibatis-3-mapper.dtd

sqlMap标签

<sql-map>

</sql-map>

<sqlMap>

</sqlMap>

<mapper>

</mapper>

statement标签

<mapped-statement>

</mapped-statement>

<select></select>

<update></update>

<statement></>…

<select></select>

<update></update>

 

参数表示

#id#

#id#

#{id}

 

sqlMap API的异同

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

执行对象

SqlMap

SqlMapClient

SqlSession

得到执行

XMLSqlMapBuilder->

builderSqlMap

SqlMapClientBuilder->

builderSqlMap

SqlSessionFactory->

openSession

执行

excuteQueryForObject

queryForObject..

queryForList…

update…

selectOne…

selectList…

update…

针对映射文件,首先是一系列的属性名称的改变,这些仅仅是名称的改变,用法和含义并没有发生变化:

  • 和全局配置文件一样,由于 DTD 约束发生变化,根元素也由原来的 <sqlMap> 调整为 <mapper>。
  • <select> 等元素的 parameterClass 属性改为了 parameterType 属性。
  • <select> 等元素的 resultClasss 属性改为了 resultType 属性。
  • <parameterMap> 等元素的 class 属性改为了 type 属性。
  • <result> 元素的 columnIndex 属性被移除了。
  • 嵌套参数由 #value# 改为了 #{value}。
  • <parameter> 等元素的 jdbcType 属性取值中,原来的 "ORACLECURSOR" 取值改为了现在的 "CURSOR","NUMBER" 取值改为了 "NUMERIC"

MyBatis 在编码中的最大的改变就是将一个最常用的 API 由 SqlMapClient 改为了 SqlSessionFactory

根据 iBatis 的习惯,我们通常把全局配置文件命名为 sqlMapConfig.xml,文件名本身并没有要求,在 MyBatis 中,也经常会将该文件命名为 Configuration.xml

版本的 DTD 约束不同,MyBatis 的 DTD 文件已经包含在发布包下的 mybatis-3.0.x.jar 包中。这直接影响到的是,iBatis 配置文件的根元素是 <sqlMapConfig>,而 MyBatis 使用的是 <configuration>

1.1iBatis 中设置属性的方式

<settings props1="value1" props2="value2"… /> 

1.2myBatis 中设置属性的方式

<settings> 
<setting name="props1" value="value1"/> 
<setting name="props2" value="value2"/> 
</settings>

2.1在 iBatis 中指定映射文件的方式
<sqlMap resource=... /> <sqlMap resource=... /> <sqlMap resource=... />

2.2在 MyBatis 中指定映射文件的方式
<mappers> 
<mapper resource=... /> 
<mapper resource=... /> 
</mappers>

在 MyBatis 中,<proccedure> 元素已经被移除,通过 <select>、<insert> 和 <update> 进行定义:

3.1 iBatis 中调用存储过程的方式

<procedure id="getValues" parameterMap="getValuesPM"> 
    { ? = call pkgExample.getValues(p_id => ?) } 
 </procedure>

3.2 iBatis 中调用存储过程的方式

<select id="getValues" parameterMap="getValuesPM" statementType="CALLABLE"> 
    { ? = call pkgExample.getValues(p_id => ?)} 
</select>

 

posted @ 2018-05-08 08:54  Dream_Lasting  阅读(273)  评论(0编辑  收藏  举报