扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
将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存储过程 存储过程的标签已经不存在了,需要使用
需要改成:
如果你调用一个insert的带返回值的存储过程,你可以使用
对返回数据集的存储过程,当使用嵌套的resultMap时,这儿有一个bug (例如:出参resultMap包含一个
Caching缓存
需要改为:
注意:你可以忽略eviction="LRU",因为他是默认值。.
Dynamic SQL动态SQL
在我的项目中最常用的的动态SQL是isNotNull. 下面是替换正则表达式的示例:
正则表达式:
需要改为:
isEqual最常用,你可以使用类似的
SqlMapClient
这个类已经不存在了,使用SqlSessionFactory替代 (详细内容看Mybatis文档).
Custom type handler
用 TypeHandler 替换接口 TypeHandlerCallback。它具有稍有不同,但方法类似。
Custom data source factory
旧的接口:
com.ibatis.sqlmap.engine.datasource.DataSourceFactory
新的接口:
org.apache.ibatis.datasource.DataSourceFactory
替换下面的方法
public void initialize(Map properties)
为:
public void setProperties(Properties props)
看完上述内容,你们掌握将ibatis迁移到mybatis3时需要注意哪些事项的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流