spring中@param和mybatis中@param使用区别
- spring中@param
/*** 查询指定用户和企业关联有没有配置角色* @param businessId memberId* @return*/int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);
- 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使用区别相关推荐
- eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法
当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...
- Mybatis 中$与#的区别
1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...
- Mybatis中的@Param注解
前言 今天在使用Mybatis时遇到一个问题,主要出错原因在于Mybatis的@Param注解,如果我不在参数前面加上@Param注解,数据库操作就会报错,如下: @Param作用 @Param注解的 ...
- Mybatis中@Param的用法和作用
用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Ma ...
- 五、深入理解Mybatis中的参数parameterType (传递一个简单参数,传递多个参数:@Param、使用自定义对象、按位置、使用Map)
1.1 parameterType parameterType: 接口中方法参数的类型, 类型的完全限定名或别名.这个属性是可选的,因为 MyBatis可以推断出具体传入语句的参数,默认值为未设置(u ...
- mybatis中case when用法以及@Param用法
https://libusi.blog.csdn.net/article/details/108044060 select d.tools_name, null as sum,null as num ...
- PageHelper 在 Spring Boot + MyBatis 中合理且规范的使用方法
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 一. 开发准备 1. 开发工具 IntelliJ IDEA ...
- Spring整合mybatis中的sqlSession是如何做到线程隔离的?
转载自 Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...
- 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
前言 在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载. 解决 内置枚举转换器 MyBatis内置了两个枚举转换器分别是:org. ...
最新文章
- Spring Boot (四)模板引擎Thymeleaf集成
- 用Socket 打造跨语言跨操作系统的网络MORPG游戏(一)
- 让Entity Framework支持MySql数据库
- 由浅到深理解ROS(9)- 几个基本概念的理解 坐标系 包
- 第43课 最大公约数 《小学生C++趣味编程》
- python——实现简单的强化学习
- 【李宏毅2020 ML/DL】P24 Semi-supervised
- 程序员面试金典——2.3访问单个结点的删除
- 如何使用代码获取电脑内存_代码实战 | 如何在 Android 开发中使用协程
- 加速晶圆代工业务创新 开创智能互联世界
- 六石管理学:头目们为什么要忽略产品质量
- DOA算法1:MUSIC算法(二)
- 微信小程序背景图片 模拟器正常显示 真机无法显示
- 棋盘中正方形,长方形个数
- Unity 3D 接入 移动MM (3.1.3)计费SDK
- 【渝粤教育】国家开放大学2019年春季 1366英语教学理论与实践 参考试题
- Python入门——文件读写
- CPT模型:一种中文兼顾NLU和NLG的非平衡预训练语言模型
- 美拍高颜值短视频一键解析批量保存到电脑中
- JAVA实现扫雷游戏
热门文章
- 解决 Xcode10 编译错误 ld: library not found for -lstdc++6.0.9
- iOS 应用的生命周期
- ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
- 从内核文件系统看文件读写过程
- ubuntu系统靠谱的清理内存的方法(can not allocate memory 问题)
- linux /proc/net/arp
- 为什么在mysql执行删除表中外键的语句,外键却仍然存在? [问题点数:40分]
- Mysql查询数据库状态及信息
- linux 下 LibreOffice Writer 使用说明
- java.sql.SQLException: Io 异常: Got minus one from a read call