zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    uoj#207 共价大爷游长沙
    bzoj4006 [JLOI2015]管道连接
    bzoj2595 [Wc2008]游览计划
    uoj#300.【CTSC2017】吉夫特
    bzoj2565 最长双回文串
    bzoj2342 [Shoi2011]双倍回文
    bzoj3676 [Apio2014]回文串
    [转载]物理大神的八卦完整版——大爱物理
    低层次数论书籍大杂烩
    控制论课题
  • 原文地址:https://www.cnblogs.com/Dream-Lasting/p/9006333.html
Copyright © 2011-2022 走看看