资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

将ibatis迁移到mybatis3时需要注意哪些事项

将ibatis迁移到mybatis3时需要注意哪些事项?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

公司主营业务:成都网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出鸡东免费做网站回馈大家。

新的DTDs

新的sqlMapConfig.xml DTD:

新的sqlMap (*.map.xml) DTD:

 

Configuration配置

配置根节点从  变成 

Settings配置

在配置的根节点:

现在是:


  
  

然后

这个配置可以删除掉,因为使用命名空间已经是一个强制的特性。

别名
 必须从  元素移动到 这里

  
  ...
  
  
    
  



  

变成:


  
    
      
    
    
  




变成:


  

Mapping

根元素从  变成 

parameterClass属性必须改成parameterType

resultClass属性必须改成resultType

class属性必须改成type

columnIndex不在 标签中使用

groupBy属性已经被废弃。下面是一个 2.x sqlMap的groupBy 例子:


  
  
  
  

新的:


  
  
  
  

Nested resultMaps嵌套的resultMaps

现在需要使用 标签指定.


  
  ...

需要改成:


  
  ...

虽然这个标签被废弃了,但是他仍然可以在iBatis 2中使用。但是对3.0.3以上版本当使用type="map"时有一个bug,并不指定 javaType 参数。这将导致:

There is no getter for property named '...' in 'interface java.util.Map'    

这将会在MyBatis 3.0.4中解决,对3.0.3版本或更早的版本解决的方法是显示的指定javaType

Inline parameters内联参数
#value#

需要改成:

#{value}
jdbcType changes jdbcType变化
jdbcType="ORACLECURSOR"

需要改成:

jdbcType="CURSOR"

还有

jdbcType="NUMBER"

需要改成:

jdbcType="NUMERIC"
Stored procedures存储过程
 存储过程的标签已经不存在了,需要使用 
  { ? = call pkgExample.getValues(p_id => ?)}

如果你调用一个insert的带返回值的存储过程,你可以使用