@Param注解的用法

news2024/11/24 23:07:11

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 emp
        where 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 emp
        values (#{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.coloradmin.cn/o/667152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解读Linux常用命令使用方法

文章目录 1.前言1.1 定义1.2 特点 2.常用命令介绍2.1 ls2.2 pwd2.3 cd2.4 touch2.5 cat2.6 mkdir2.7 rm2.8 cp2.9 mv2.10 man&#xff08;联机手册&#xff09;2.11 vim2.12 grep2.13 ps2.14 netstat 1.前言 1.1 定义 Linux是一套免费使用和自由传播的类Unix操作系统&#xf…

【百套源码】HTML5期末大作业 - 各类网页作业源码合集

文章目录 持续更新文章记录1️⃣ 个人介绍类相关源码1.1 html实现个人简历1.2 科技风个人简历1.3 网站风个人简历1.4 多种风格个人主页模板1.5 html好看的个人简历明星版1.6 专属个人主页-系列11.7 专属个人主页-系列21.8 专属个人主页-系列31.9 专属个人主页-系列41.10 专属个…

uniapp和springboot微信小程序开发实战:前端架构之微信小程序主页实现

文章目录 主页效果前端代码后端实现主页效果 前端代码 具体代码实现如下: <template><view><!--首页轮播图--><view class="uni-banner-wrap"><swiper class="swiper" circular :indicator-dots="indicatorDots" …

数字信号处理11:变换

之前好长一段时间都在写软著、写一些结课作业&#xff0c;就断断续续的在学&#xff0c;很少有时间把东西串起来&#xff0c;前些博文主要就是讲的说&#xff0c;做这个Z变换&#xff0c;今天就主要来看看其他的变换&#xff0c;当然&#xff0c;最重要的还是傅里叶变换&#x…

有哪些优秀好用的网站SEO文章采集软件?

有哪些优秀好用的网站SEO文章采集软件?Ai智能采集文章操作教程及txt转Word教程#资源变现 #资源采集 我为什么会死磕seo并利用采集站seo赚到了第一个100W&#xff1f; 两个原因&#xff1a; 第一就是seo就是目前网络上免费的获取精准用户最牛逼&#xff0c;最有效的引流吸粉手…

linux下express+puppeteer安装部署并用PM2守护进程

背景 承上篇 puppeteer-不需重构&#xff0c;无痛加强vue单页面应用的SEO&#xff0c;提升百度收录排名,是在本地nginx部署前端&#xff0c;本地另起express服务进行测试&#xff0c;下面我们来讲讲如何部署express到linux服务器&#xff0c;并用PM2守护进程。 node 16.14.1 p…

java 学习交流社区平台系统Myeclipse开发mysql数据库web结构jsp编程计算机servlet网页项目

一、源码特点 JSP 学习交流社区平台系统 是一套完善的系统源码&#xff0c;对理解JSP java serlvet dao bean MVC编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内…

wsl中docker自启动

前言 wsl -l -v # 查看 wsl 的状态 wsl -t Ubuntu # 关闭指定版本 wsl -d Ubuntu # 启动指定版本 启动 docker 通过命令 ps -p 1 -o comm 我们知道我们用的是 init&#xff0c;故我们将 systemd 命令修改为 SysV init命令。 ps -p 1 -o comm 更换命令&#xff0c;用SysV in…

NLP作业02:课程设计报告

作业头 这个作业属于哪个课程自然语言处理这个作业要求在哪里NLP作业02&#xff1a;课程设计报告我在这个课程的目标实现基于Seq2Seq注意力机制的聊天机器人这个作业在哪个具体方面帮助我实现目标问题的提出&#xff0c;资料的查找参考文献1.简说Seq2Seq原理以及实现 2.序列到…

Android加载大图策略,防止OOM

前言 Android中图片以位图&#xff08;Bitmap&#xff09;的形式存在&#xff0c;位图常见的格式有.png、.jgp、.bmp、.gif。在加载图片的过程中常见的就是OOM&#xff08;Out of Memory&#xff09;内存溢出。 内存溢出是系统会给APP分配内存也就是Heap Size值。当APP占用的内…

含多类型充电桩的电动汽车充电站优化配置方法(matlab代码)

目录 1 主要内容 目标函数 约束条件 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第三章《含多类型充电桩的电动汽车充电站优化配置方法》&#xff0c;本章选择3种典型的电动汽…

乐鑫创客沙龙精彩回顾|激发创新、共享技术

近期&#xff0c;乐鑫科技在全国多个城市举办了 ESP Friends 创客沙龙活动&#xff0c;吸引了来自物联网各个领域的企业家、开发者、创客和学生的参与&#xff0c;包含智能硬件企业家、技术自媒体、教育从业者、博士生、高校学生等。他们与乐鑫资深应用工程师和技术专家面对面深…

冯诺依曼体系结构和操作系统的工作方式

目录 一. 冯诺依曼体系结构 1.1 什么是冯诺依曼体系结构 1.2 为什么冯诺依曼体系结构这样设计 1.3 冯诺依曼体系结构与现实问题的结合 二. 操作系统的工作方式 2.1 操作系统的功能 2.2 操作系统对下进行软硬件管理的方式 2.3 操作系统对上提供使用环境的方式 三. 总结…

泛微E-Office前台文件上传漏洞

0x01 阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&…

史上最全Hadoop面试题:尼恩大数据面试宝典专题1

说在前面&#xff1a; 《尼恩 大数据 面试宝典》 是 《尼恩Java面试宝典》 姊妹篇。 这里特别说明一下&#xff1a;《尼恩Java面试宝典》41个专题 PDF &#xff08;请在文末获取&#xff09;自发布以来&#xff0c; 已经收集了 好几千题&#xff0c; 足足4000多页&#xff0c…

android 如何分析应用的内存(八)——Android 7.0以后的malloc debug

android 如何分析应用的内存&#xff08;八&#xff09; 接上文&#xff0c;介绍六大板块中的第三个————malloc调试和libc回调 上一篇文章中&#xff0c;仅仅是在分配和释放的时候&#xff0c;拦截对应的操作。而不能进一步的去检查内存问题。比如&#xff1a;释放之后再…

卖家必看,要做好独立站,一定要知道的八件事!

如何打造并运营你的跨境独立站&#xff1f;如何吸引更多的流量并促使他们在你的网站下单&#xff1f;在你决定开设独立站之前&#xff0c;以下这些方面是你必须要考虑的&#xff0c;否则你的独立站可能会面临失败的风险。 一、定义目标受众 你是B2B业务还是B2C独立站&#xff…

小区物业电瓶车充电桩收费管理系统 支持扫码刷卡

电动车火灾事故频频发生&#xff0c;毫不起眼的电动车屡次引发夺命大火&#xff0c;电动车已然成为火灾“重灾区”。为预防和遏制电动自行车火灾事故发生&#xff0c;国家三令五申各种政策&#xff0c;为此公安部安委会曾出台《电动自行车集中停放和充电治理方案》。 大部分充电…

visionOS:理想的UI设计竟要考虑这么多细节

拥有对macOS、iPadOS、watchOS、iOS等系统的开发经验&#xff0c;苹果在XR操作系统设计上也具有先天优势&#xff0c;相比于其他公司从头开始构建XR系统界面&#xff0c;苹果可直接借鉴已经过验证的设计美学。 与此同时&#xff0c;WWDC 2023上公布的一系列开发者教程来看&…

Vue3 + Vite + Ts自己封装的基础组件库发布npm ,npm安装使用(Volar )支持TS 类型提示功能(vite-plugin-dts 使用)

一、需求 在开发Vue3 Ts项目时&#xff1a;使用自己二次封装的基础组件&#xff0c;没有Ts类型提示&#xff0c;不能像Element-plus鼠标停在标签或者属性上就能提示当前组件有哪些属性&#xff08;即props&#xff09;及其属性的类型&#xff0c;如下图是Element-plus组件的使…