1. spring中@param
    /*** 查询指定用户和企业关联有没有配置角色* @param businessId  memberId* @return*/int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 

  1. mybatis中的param
    /*** 查询指定用户和企业关联有没有配置角色* @param businessId memberId* @return*/int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 

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

<select id="selectRoleCount" resultType="java.lang.Integer" >
select count(tbm.id)from t_business_member_relation tbmwhere tbm.business_id = #{0,jdbcType=INTEGER}and tbm.member_id = #{1,jdbcType=INTEGER}and tbm.role_business_id is not null
</select>

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

<select id="selectRoleCount" resultType="java.lang.Integer" >select count(tbm.id)from t_business_member_relation tbmwhere tbm.business_id = #{businessId,jdbcType=INTEGER}and tbm.member_id = #{memberId,jdbcType=INTEGER}and tbm.role_business_id is not null</select>

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

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

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

截图如下 
 
所以在使用的时候一定要注意@param引用和使用的一致性

最好的方法就是在使用注意引用的是哪个包里面的。

比如 引用的是Mybatis的时候

import org.apache.ibatis.annotations.Param;

本文转载自http://blog.csdn.net/gao36951/article/details/44258217

转载于:https://www.cnblogs.com/sunxun/p/5530917.html

spring中@param和mybatis中@param使用区别相关推荐

  1. eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法

    当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...

  2. Mybatis 中$与#的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  3. Mybatis中的@Param注解

    前言 今天在使用Mybatis时遇到一个问题,主要出错原因在于Mybatis的@Param注解,如果我不在参数前面加上@Param注解,数据库操作就会报错,如下: @Param作用 @Param注解的 ...

  4. Mybatis中@Param的用法和作用

    用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Ma ...

  5. 五、深入理解Mybatis中的参数parameterType (传递一个简单参数,传递多个参数:@Param、使用自定义对象、按位置、使用Map)

    1.1 parameterType parameterType: 接口中方法参数的类型, 类型的完全限定名或别名.这个属性是可选的,因为 MyBatis可以推断出具体传入语句的参数,默认值为未设置(u ...

  6. mybatis中case when用法以及@Param用法

    https://libusi.blog.csdn.net/article/details/108044060 select  d.tools_name, null as sum,null as num ...

  7. PageHelper 在 Spring Boot + MyBatis 中合理且规范的使用方法

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 一. 开发准备 1. 开发工具 IntelliJ IDEA ...

  8. Spring整合mybatis中的sqlSession是如何做到线程隔离的?

    转载自  Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...

  9. 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器

    前言 在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载. 解决 内置枚举转换器 MyBatis内置了两个枚举转换器分别是:org. ...

最新文章

  1. Spring Boot (四)模板引擎Thymeleaf集成
  2. 用Socket 打造跨语言跨操作系统的网络MORPG游戏(一)
  3. 让Entity Framework支持MySql数据库
  4. 由浅到深理解ROS(9)- 几个基本概念的理解 坐标系 包
  5. 第43课 最大公约数 《小学生C++趣味编程》
  6. python——实现简单的强化学习
  7. 【李宏毅2020 ML/DL】P24 Semi-supervised
  8. 程序员面试金典——2.3访问单个结点的删除
  9. 如何使用代码获取电脑内存_代码实战 | 如何在 Android 开发中使用协程
  10. 加速晶圆代工业务创新 开创智能互联世界
  11. 六石管理学:头目们为什么要忽略产品质量
  12. DOA算法1:MUSIC算法(二)
  13. 微信小程序背景图片 模拟器正常显示 真机无法显示
  14. 棋盘中正方形,长方形个数
  15. Unity 3D 接入 移动MM (3.1.3)计费SDK
  16. 【渝粤教育】国家开放大学2019年春季 1366英语教学理论与实践 参考试题
  17. Python入门——文件读写
  18. CPT模型:一种中文兼顾NLU和NLG的非平衡预训练语言模型
  19. 美拍高颜值短视频一键解析批量保存到电脑中
  20. JAVA实现扫雷游戏

热门文章

  1. 解决 Xcode10 编译错误 ld: library not found for -lstdc++6.0.9
  2. iOS 应用的生命周期
  3. ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
  4. 从内核文件系统看文件读写过程
  5. ubuntu系统靠谱的清理内存的方法(can not allocate memory 问题)
  6. linux /proc/net/arp
  7. 为什么在mysql执行删除表中外键的语句,外键却仍然存在? [问题点数:40分]
  8. Mysql查询数据库状态及信息
  9. linux 下 LibreOffice Writer 使用说明
  10. java.sql.SQLException: Io 异常: Got minus one from a read call