首页 > 其他分享 >Mybatis的Mapper中方法入参什么时候加@Param

Mybatis的Mapper中方法入参什么时候加@Param

时间:2024-06-18 20:43:10浏览次数:11  
标签:XML Mapper userId Param 入参 user id

参数情况:

  • 一个基本类型 -- 不需要
  • 多个基本类型 -- 需要
  • 一个对象  -- 不需要
  • 多个对象  -- 不需要
  • 一个集合  -- 不需要

 

  • 单个基本类型不用加@Param

Mapper接口方法:

void deleteUserById(Long userId);

XML中的SQL语句:

<delete id="deleteUserById" parameterType="Long">
delete from user where id = #{userId}
</delete>

 

  • 多个基本类型需要加@Param

Mapper接口方法:

void updateUserStatusAndRole(@Param("userId") Long userId, @Param("status") String status, @Param("role") String role);


XML中的SQL语句:

<update id="updateUserStatusAndRole" parameterType="map">
update user set status = #{status}, role = #{role} where id = #{userId}
</update>

解释: 在这种情况下,有多个基本类型参数(userId、status和role),需要使用@Param注解明确指定参数的名称,以便在XML中引用这些参数。

 

  • 单个对象不用加@Param

Mapper接口方法:

void insertUser(User user);

XML中的SQL语句:

<insert id="insertUser" parameterType="User">
insert into user (id, name) values (#{id}, #{name})
</insert>

解释: 在这种情况下,入参是一个对象(User类),而且在XML中可以直接使用对象的属性名(id和name)来引用对象的属性,无需使用@Param注解,无需使用user.id,user.name的方法。

 

  • 多个对象不需要@Param

Mapper接口方法:

void updateUserAddress(User user, Address address);


XML中的SQL语句:

<update id="updateUserAddress" parameterType="map">
update user set
address_line1 = #{address.line1},
address_line2 = #{address.line2}
where id = #{user.id}
</update>

解释: 当方法的入参是两个对象类型时,不需要使用 @Param 注解,可以直接在 XML 中使用对象的属性名引用对象属性。

 

  • 单个集合不用加@Param

Mapper接口方法:

void insertUsers(List<User> users);

XML中的SQL语句:

<insert id="insertUsers" parameterType="java.util.List">
insert into user (id, name) values
<foreach collection="users" item="user" separator=",">
(#{user.id}, #{user.name})
</foreach>
</insert>

解释: 在这种情况下,入参是一个集合(User类),可以使用集合中每个对象来引用属性,无需使用@Param。

 

标签:XML,Mapper,userId,Param,入参,user,id
From: https://www.cnblogs.com/r1-12king/p/18255081

相关文章

  • mybatisplus一个入参查询两个字段用或
    1List<TechnologyParamPackageMaterialVo>materialVoList=newArrayList<>();23LambdaQueryWrapper<TechnologyParamPackage>wrapper=newLambdaQueryWrapper<>();4wrapper.eq(ObjUtil.isNotEmpty(queryReq.getStatus()),TechnologyPara......
  • 【Java】 深入解析Java安全异常:Error - trustAnchors parameter must be non-empty
    >>【痕迹】QQ+微信朋友圈和聊天记录分析工具>>(1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。>>(2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。>>(3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。>>下载地......
  • MPTCP is missing from system parameters inside Mininet hosts
    https://github.com/mininet/mininet/issues/1161 Hello,Iamhavingproblemswithcertainsystemparametersnotbeingaccessiblefrom within a Mininet hosteventhoughtheyareaccessiblefromthehostsystem.Afteracleaninstallwiththefollowing:U......
  • mybatis的mapper中的sql涉及嵌套且外部引用导致的问题:XML fragments parsed from prev
    假设xxx.xml中有类似下方的sql嵌套:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.xx......
  • On the Parameterization and Initialization of Diagonal State Space Models
    目录概符号说明S4D代码GuA.,GuptaA.,GoelK.andReC.Ontheparameterizationandinitializationofdiagonalstatespacemodels.NeurIPS,2022.概Mamba系列第四作:S4D.符号说明\(u(t)\in\mathbb{R}\),输入信号;\(x(t)\in\mathbb{R}^N\),中间状态;\(......
  • mybatis-plus加载多个module的mapper踩坑记录
    背景 有一个多模块的项目,每个模块中都有自己的mapper.xml文件。但是在执行一次SQL查询中,mybatis却报出了下面的异常 排查过程第一步,先检查mapper扫描是否正确 先找到这个方法的位置 可以看到包名是com.pinming.security.responsibility.mapper 检查SpringBoot......
  • springboot使用ComponentScan和MapperScan
    今天讲springboot项目中的启动类换到了start包下,发现无法扫描并注册javabean. 原因:容器在启动时会由spring.classPathBeanDefinitionScanner和spring-mybaits.classPathMapperScanner两个类去执行doScan方法,如果没有使用@ComponentScan和MapperScan两个注解spring会使用Spring......
  • python系列:FASTAPI系列 04-GET请求 params参数
    FASTAPI系列04-GET请求params参数FASTAPI系列04-GET请求params参数前言一、查询参数二、参数的默认值三、多路径查询参数四、查询参数为必填项总结FASTAPI系列04-GET请求params参数前言get请求的参数在url后面携带,通常称做queryparams一、查询参数在......
  • 从零开始的.NET项目(一)仓储模式与配置AutoMapper
    目标框架:.net6.0操作系统:macos编译器:Rider内容:创建第一个Controller,使用仓储(Respository)模式实现,并使用AutoMapper进行数据对象关系映射非常简单的实现,Automapper也只介绍了最基础也最常用的其他用法后续再补,目的就是稳准狠......
  • 【OpenCV函数详解之cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_
    文章目录cv2.calcOpticalFlowPyrLK()函数介绍:函数定义:参数说明:返回值示例代码执行结果:**总结:**p1,st,err=cv2.calcOpticalFlowPyrLK(old_gray,frame_gray,p0,None,**lk_params)解释:函数:参数:返回值:使用:cv2.calcOpticalFlowPyrLK()函数介绍:cv2.calcOpti......