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

转载 2017年01月03日 14:39:09
  1. spring中@param
    /**
      * 查询指定用户和企业关联有没有配置角色
      * @param businessId  memberId
      * @return
      */
     int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. mybatis中的param
    /**
      * 查询指定用户和企业关联有没有配置角色
      * @param businessId memberId
      * @return
      */
     int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

<select id="selectRoleCount" resultType="java.lang.Integer" >
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
</select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

是根据参数的顺序来取值的,并且从0开始。而在mybatis @param在xml中则是如下这样引用变量的

<select id="selectRoleCount" resultType="java.lang.Integer" >
    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
 </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

是通过参数名来引用的 
注:如果Mapper.Java文件中引用的是Spring的

org.springframework.data.repository.query.Param;
  • 1
  • 1

但是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]
  • 1
  • 1

截图如下 
这里写图片描述 
所以在使用的时候一定要注意@param引用和使用的一致性

mybatis中@Param用法注意事项

背景:    DAO中定义了一个方法为:List getAllPeople(@Param("vo") SearchVo vo,@Param("id")String id) ;    service...
  • showgood119
  • showgood119
  • 2017年12月01日 15:01
  • 139

mysql + SpringMVC + MyBatis中批量插入实例以及@Param注解的用法

1.使用到的jar包如下: mybatis-3.2.2.jar、mybatis-spring-1.2.2.jar、mysql-connector-java-5.1.32.jar 2.Spring配置文...
  • yansong_8686
  • yansong_8686
  • 2015年07月20日 23:56
  • 1995

在mybatis中传入参数的几种方式 @Param

@Param注解在mybatis中的使用以及传入参数的几种方式(转) 第一种: Dao层的方法 "font-size:12px;">Public User selectUser(String na...
  • u010442302
  • u010442302
  • 2017年07月14日 15:55
  • 1001

Spring Boot中使用MyBatis注解配置详解

Spring Boot中使用MyBatis注解配置详解  2016-08-19  Spring Boot 被围观 4188 次 之前在Spring Boot中整合MyB...
  • baochanghong
  • baochanghong
  • 2017年01月09日 09:52
  • 4080

Mybatis(4):映射文件与接口代码的传参,使用@Param 注解用法

Mybatis(4):映射文件与接口代码的传参,使用@Param 注解用法
  • qq_29166327
  • qq_29166327
  • 2017年12月17日 11:08
  • 47

Mybatis @Param注解的作用

在刚使用Mybatis的时候,我们经常会犯一个错误。如下一个秒杀网站的Dao层中的方法public interface SeckillDao { /** * 根据id查询秒杀的商品信...
  • DoUUnderstand
  • DoUUnderstand
  • 2017年11月07日 11:31
  • 169

SpringBoot集成Redis,以及MybatisPlus分页、Mapper的使用(一)

概述这段时间接触很多知识,也逐渐深入到项目整个流程开发,对Linux也有逐步地认识。虽然有去探索,但感觉能力还不足以写出来跟大家分享。撰写本文是了解到有些读者反馈,对于MP(MybatisPlus缩写...
  • FJeKin
  • FJeKin
  • 2017年11月01日 15:24
  • 840

MyBatis3.1.1+Spring3.1.1的增、删、查、改以及分页和事务管理

1. [代码]Mybatis3.1.1+Spring3.1.1+MySQL5.5      ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14...
  • u011518709
  • u011518709
  • 2015年06月04日 09:07
  • 812

mybatis参数映射

mybatis参数映射(?) 规则 非@Param注解参数时可使用 #{参数位置[0..n-1]} 或者 #{param[1..n]} 如果参数类型是自定义对象(bea...
  • wangli61289
  • wangli61289
  • 2013年08月14日 16:54
  • 8948

mybatis的@Param注解使用场景

mybatis中的@Param参数比较常用,基本的用法大家也清楚。但有些场景的用法还是不太了解,以下介绍一下本人遇到的一个使用场景。                  如何在sql的映射文...
  • zou2ouzou
  • zou2ouzou
  • 2017年07月27日 09:56
  • 208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring中@param和mybatis中@param使用区别
举报原因:
原因补充:

(最多只允许输入30个字)