@Param注解的用法

news/2024/9/8 4:28:37/

1、使用@Param注解的原因

在 Mapper接口中,当方法的参数为多个字面量类型,此时mybatis会将这些参数存储在一个Map集合中,以两种方式进行存储

  • 1、以arg0.arg1…为键,以参数为值
  • 2、以param1,param2…为键,以参数为值

例如:根据两个参数ename和job,查询emp的信息。

  • 1、接口方法的习惯写法
Emp finEmpByEnameAndJob(String ename, String job);
  • 2、SQL的习惯写法
<select id="finEmpByEnameAndJob" resultType="Emp">select * from emp where ename = #{ename} and job = #{job};
</select>
  • 3、执行查询操作

在这里插入图片描述

  • 4、出现查询异常
### Cause: org.apache.ibatis.binding.BindingException: 
Parameter 'ename' not found. 
Available parameters are [arg1, arg0, param1, param2]

2、@Param注解的用法

2.1、@Param注解普通类型的参数

Mapper中的方法:

Emp finEmpByEnameAndJob(@Param("ename") String ename, @Param("job") String job);

映射到xml中的标签

<select id="finEmpByEnameAndJob" resultType="Emp">select *from empwhere ename = #{ename}and job = #{job};
</select>

注意点:
其中where ename = #{ename} and job = #{job}中的ename和job都是从注解@Param() 里面取出来的,取出来的值就是方法中形式参数 int ename 和 String job的值。

2.2、@Param注解JavaBean对象

SQL语句通过@Param注解中的别名把对象中的属性取出来然后赋值

Mapper接口中的方法:

int addEmp(@Param("emp") Emp emp);

映射到xml中的标签

<insert id="addEmp">insert into empvalues (#{emp.empno}, #{emp.ename}, #{emp.job}, #{emp.mgr}, #{emp.hiredate}, #{emp.sal},#{emp.commit},#{emp.deptno});
</insert>

注意点:
在SQL语句中,通过使用@Param(“emp”)注解中的别名emp,对象emp中的属性取出来然后给SQL语句中的字段赋值。

3、注意事项

  • 1、当使用了@Param注解来声明参数的时候,SQL语句取值使用#{ },${ }取值都可以。
  • 2、当不使用@Param注解声明参数的时候,必须使用的是#{}来取参数。使用${}方式取值会报错。
  • 3、不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。

http://www.ppmy.cn/news/486298.html

相关文章

uniapp和springboot微信小程序开发实战:前端架构搭建之HBuilder X创建项目以及目录介绍

文章目录 关于HBuilderuni-app创建项目新建项目目录介绍本项目开发配置pages.json文件pagestabBarglobalStylemainfest.jsonmian.js接口清单关于HBuilder HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE。 HBuilder的编写用到了Java、C、Web和Ruby。HBuilder本…

Android 7.0真实上手体验

Android 7.0真实上手体验 Android 7.0的首个开发者预览版发布了&#xff0c;支持的设备只有Nexus6、Nexus 5X、Nexus 6P、Nexus 9、Nexus Player、Pixel C六款设备&#xff01; 碎片化 就此盖棺定论似乎为时尚早&#xff0c;毕竟这只是Android 7.0的首个预览版&#xff0…

移动周刊第 184 期:Android 开发终极指南

写在前面 本期移动周刊第 184 期如约而至&#xff0c;聚焦 Android、iOS、VR/AR/MR、直播等前沿移动开发技术&#xff0c;收录一周最热点&#xff0c;解读开发技巧&#xff0c;我们希望从中能够让你有一些收获&#xff0c;如果你有好的文章以及优化建议&#xff0c;请发送邮件…

树莓派-2-RaspBerry4B硬件介绍和初始化安装

1 Raspberry硬件介绍 树莓派是一款基于ARM的微型电脑主板&#xff0c;以 MicroSD卡为内存硬盘&#xff0c;主板周围有USB接口和以太网接口&#xff0c;可连接键盘、鼠标和网线&#xff0c;同时拥有HDMI高清视频输出接口和40针可以输入输出的GPIO接口&#xff0c;以上部件全部整…

【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题

【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题 0. 什么是PA&#xff1f;1. 安装VMwareUbuntu 20.041.1 ubuntu版本选择20.04参考链接: 1.2 安装VMtools——实现复制粘贴1.2 启动共享文件夹1.3 换源 2. 安装PA项目中所需…

chromebook刷机_Android应用将在Chromebook上超赞……解决难题

chromebook刷机 Android apps are coming to Chromebooks, and the ASUS Chromebook Flip is the first device to get a taste of what that’s going to be like. It makes sense, really—it’s an ultra-portable convertible laptop-slash-tablet that makes a lot of wor…

chromebook刷机_Chromebook辅助功能指南

chromebook刷机 If you have trouble reading text, seeing specific colors, or making out things on the screen, Chrome OS has accessibility features bursting at the seams designed to help you. You can manage them individually from the system menu or the Setti…

群晖NAS遇到断电如何自动关机

群晖NAS遇到断电时如何自动关机 前置条件实现功能的想法具体实施的步骤开启群晖Linux的SSH登陆安装Putty或是Xshell远程登陆上群晖创建计划任务 前置条件 需要一台UPS&#xff08;品牌功能不限&#xff0c;只需续航5分钟以上就可以&#xff09; 实现功能的想法 通过监控网卡…

防止短信接口验证码恶意攻击

一、易遭恶意使用的场景或网站 &#xff08;1&#xff09;网络在线投票站&#xff08;需要填写手机号码进行校验&#xff09; &#xff08;2&#xff09;用户在线注册页面&#xff08;包含手机短信验证功能&#xff09; &#xff08;3&#xff09;手机短信动态密码登录 二&…

图片路径的映射-两种方法实现

方法一 在 Spring Boot 中&#xff0c;你可以使用 RestController 和 RequestMapping 注解来实现图片路径的映射。下面是一个示例代码&#xff1a; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import o…

英特尔锐炫A380显卡即将在中国面市

全新英特尔锐炫A380显卡为主流游戏玩家和内容创作者提供新一代技术。 英特尔宣布面向台式机的首款A3系列显卡——英特尔锐炫™A380 GPU面市&#xff0c;旨在为主流游戏玩家和内容创作者提供全新选择。英特尔锐炫A380 GPU搭配6GB GDDR6可以支持诸多新版本游戏&#xff0c;将由包…

技嘉 AORUS RTX2080显卡光线追踪技术详解

2018年是显卡及游戏发展史上的一个重要分水岭&#xff0c;因为这一年NVIDIA推出了RTX 2080 Ti/2080/2070三款显卡&#xff0c;它们使用了全新的图灵架构&#xff0c;除了继续提升显卡游戏性能之外&#xff0c;图灵GPU最大的变化是带来了RTX实时光线追踪及Tensor Core人工智能加…

嵌入式开发从入门到精通之第二十五节:IPMSG协议

目录 1、IPMSG协议简介 IPMSG可以用于收发消息和文件(夹) 用户上下线识别 消息收发

超高压系列IXBX50N360HV、IXBT14N300HV、IXBH32N300高压反向导通 (BiMOSFET™) IGBT器件

器件介绍&#xff1a; 超高压系列3000V - 3600V反向导通 (BiMOSFET™) IGBT将MOSFET和IGBT的优势相结合。这些高压器件的饱和电压和内置二极管的正向电压降均具有正电压温度系数&#xff0c;因此非常适合用于并联运行。“自由”内置体二极管用作保护二极管&#xff0c;为器件关…

变频调速设计matlab,变频调速系统Matlab仿真及硬件实现

交流电机变频调速已逐步被人们接受并成为当代电机调速的主流,并且因其结构简单、运行可靠、体积小、重量轻、效率和功率因数高,已经逐步取代直流伺服电动机而应用在高性能的伺服系统中[1]。因此,如何建立有效的交流异步电机控制系统的仿真模型,对于搭建硬件平台是一个很好的理论…

matlab恒压频比,基于matlab的三相异步电机恒压频比调速仿真.doc

基于matlab的三相异步电机恒压频比调速仿真.doc 摘要随着电力电子器件的产生&#xff0c;异步电机的调速问题得到了很好的解决&#xff0c;调速性能甚至优于直流电机&#xff0c;电力电子器件的产生给异步电机的调速问题带来了福音。异步电机的调速有多种方法&#xff0c;转速…

enc易能变频_ENC易能变频器没反应快修诚信好

ENC易能变频器没反应快修诚信好3oqm ENC易能变频器没反应快修诚信好LE常用的24VDC电机包含编码器反馈。它是低速传输大量工作负载以及推动操作的理想选择。SMC供给许多控制器来操作这些步进电机&#xff0c;具体取决于与PLC的所需关系。步进电机能够经过调用步进数据表&#xf…

易能变频器说明书故障代码_易能EN600变频器使用说明书.pdf

前 言 首先感谢您购买深圳市易能电气技术有限公司开发生产的 EN600 系列 变频器! EN600 系列高性能磁通矢量变频器采用先进的控制方式实现了高转矩、 高精度、宽调速驱动,同时支持无速度传感器转矩控制和带PG转矩控制,能 够满足通用变频器的各种要求。EN600 是将客户通用需求…

RK3566底层CPU接口部分

CPU温度 CPU温度&#xff1a;cat /sys/class/thermal/thermal_zone0/temp GPU温度&#xff1a;cat /sys/class/thermal/thermal_zone1/tempCPU电压 cat /sys/kernel/debug/regulator/vdd_cpu/voltage 查看CPU电压cat /sys/kernel/debug/regulator/vdd_cpu/cpu0-cpu/min_u…

fre740变频器参数_三菱FR-E740变频器简介7.doc

三菱FR-E740变频器简介7 三菱 FR-E740变频器简介 一、 FR-E740变频器的安装和接线 在使用三菱PLC的YL-158-G设备中,变频器选用三菱FR-E700系列变频器中的FR-E740-0.75K-CHT型变频器,该变频器额定电压等级为三相400V,适用电机容量0.75kW及以下的电动机。FR-E700系列变频器的外…