首页 > 编程语言 > 详细

spring中@param和mybatis中@param使用区别

时间:2016-07-11 19:22:24      阅读:216      评论:0      收藏:0      [点我收藏+]

spring中@param和mybatis中的@param的写法大致一样

 int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);

但是引入import的类不一样,一个是spring的【org.springframework.data.repository.query.Param】

一个是mybatis的,【org.apache.ibatis.annotations.Param;

从表面上看,两种并没有区别,但是在xml文件中使用的时候是有区别的,Spring中的@param在xml需要如下这样引用变量

select
    count(tbm.id)
    from t_business_member_relation tbm
    where tbm.business_id = #{0,jdbcType=INTEGER}
    and tbm.member_id = #{1,jdbcType=INTEGER}
    and tbm.role_business_id is not null

是根据参数的顺序来取值的,并且从0开始。

而在mybatis @param在xml中则是如下这样引用变量的、

   select

    count(tbm.id)
    from t_business_member_relation tbm
    where tbm.business_id = #{businessId,jdbcType=INTEGER}
    and tbm.member_id = #{memberId,jdbcType=INTEGER}
    and tbm.role_business_id is not null

注:如果Mapper.java文件中引用的是Spring的但是Mapper.xml中使用的是mybatis 的用法,那么就会如下的错误

org.mybatis.spring.MyBatisSystemException: 

nested exception is org.apache.ibatis.binding.BindingException: 

Parameter ‘businessId‘ not found. Available parameters are [1, 0, param1, param2]

spring中@param和mybatis中@param使用区别

原文:http://4443915.blog.51cto.com/4433915/1825446

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!