Mybatis中@Param的用法和作用详解
发布时间 - 2026-01-11 03:28:14 点击率:次用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中

我们先来看Mapper接口中的@Select方法
package Mapper;
public interface Mapper {
@Select("select s_id id,s_name name,class_id classid from student where s_name= #{aaaa} and class_id = #{bbbb}")
public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);
@Delete......
@Insert......
}
这里解释一下
1.@Select(....)注解的作用就是告诉mybatis框架,执行括号内的sql语句
2.s_id id,s_name name,class_id classid 格式是 字段名+属性名,例如s_id是数据库中的字段名,id是类中的属性名
这段代码的作用就是实现数据库字段名和实体类属性的一一映射,不然数据库不知道如何匹配
3.where s_name= #{aaaa} and class_id = #{bbbb} 表示sql语句要接受2个参数,一个参数名是aaaa,一个参数名是bbbb,如果要正确的传入参数,那么就要给参数命名,因为不用xml配置文件,那么我们就要用别的方式来给参数命名,这个方式就是@Param注解
4.在方法参数的前面写上@Param("参数名"),表示给参数命名,名称就是括号中的内容
public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id);
给入参 String name 命名为aaaa,然后sql语句....where s_name= #{aaaa} 中就可以根据aaaa得到参数值了
PS:下面看下spring中@param和mybatis中@param使用区别
1.spring中@param
/**
* 查询指定用户和企业关联有没有配置角色
* @param businessId memberId
* @return
*/
int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId);
2.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 tbm
where 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 tbm
where 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中@Param的用法和作用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# mybatis
# param
# 用法
# mybatis中${}和#{}取值的区别分析
# MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)
# Mybatis中@Param注解的作用说明
# Mybatis中${param}与#{param}的区别说明
# 的是
# 字段名
# 小编
# 就会
# 是有
# 就能
# 在此
# 则是
# 两种
# 而在
# 这段
# 给大家
# 要用
# 上看
# 要给
# 可以根据
# 命名为
# 中就
# 数据库中
# 所述
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何在IIS中配置站点IP、端口及主机头?
海南网站制作公司有哪些,海口网是哪家的?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
在centOS 7安装mysql 5.7的详细教程
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在IIS中新建站点并配置端口与物理路径?
Laravel如何升级到最新版本?(升级指南和步骤)
在线教育网站制作平台,山西立德教育官网?
如何为不同团队 ID 动态生成多个独立按钮
Python3.6正式版新特性预览
Laravel如何实现多对多模型关联?(Eloquent教程)
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
jquery插件bootstrapValidator表单验证详解
教学论文网站制作软件有哪些,写论文用什么软件
?
在线制作视频网站免费,都有哪些好的动漫网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
bootstrap日历插件datetimepicker使用方法
SQL查询语句优化的实用方法总结
,网页ppt怎么弄成自己的ppt?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
如何在Tomcat中配置并部署网站项目?
微信小程序 canvas开发实例及注意事项
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
*服务器网站为何频现安全漏洞?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
C++时间戳转换成日期时间的步骤和示例代码
Laravel如何自定义分页视图?(Pagination示例)
如何在服务器上三步完成建站并提升流量?
jQuery 常见小例汇总
原生JS实现图片轮播切换效果
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何在香港服务器上快速搭建免备案网站?
Bootstrap整体框架之CSS12栅格系统
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
深入理解Android中的xmlns:tools属性
Laravel如何使用Service Container和依赖注入?(代码示例)
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件

