码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签:mybatis传参

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使用区别

标签:mybatis传参

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!