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

news/2024/9/28 6:15:17

参数情况:

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

 

  • 单个基本类型不用加@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。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/46998.html

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

相关文章

中考后刷题补题合集

T1(莫队,增量式维护答案) https://www.luogu.com.cn/problem/P1494 1731。 看上一篇总结的莫队。双倍经验。QAQ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath>using namespace std;typed…

go gin web服务器使用fvbock/endless优雅地重启或停止

gin使用fvbock/endless gin 正常使用注册路由时: package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run() // 监听并…

typroa图片上传脚本

typroa的图片上传脚本,针对Telegraph-Image项目,适用于macOS和Linux系统。安装json处理器macOSbrew install jqLinux:# Debian/Ubuntu apt install jq -y​ 脚本配置 编辑脚本,在以下位置填入你的图床url: # 自定义URL部分 base_url=""注意:网址url后不需要加 …

HTML中的文本居中

本文将详细介绍如何在HTML中实现文本居中,包括使用不同的HTML标签和CSS属性来达到这一目的。HTML中的文本居中 参考:html center text 在网页设计中,文本居中是一种常见的布局需求,用于提高页面的美观性和用户体验。HTML(HyperText Markup Language)作为构建网页内容的标…

HbuilderX 4.15版本 text标签不能用v-html渲染,会失效

如题,注意uni-notice-bar组件,里面用了标签v-html渲染,所以4.15版本的uni-notice-bar组件不要用,坑

论文阅读:T-RAG: LESSONS FROM THE LLM TRENCHES

T-RAG: LESSONS FROM THE LLM TRENCHES(https://arxiv.org/abs/2402.07483) https://github.com/jiangnanboy/paper_read_note一.概述大型语言模型(llm)越来越多地应用于各个领域,包括对私有企业文档的问答,其中数据安全性和鲁棒性至关重要。检索增强生成(retrieve - augment…

论文阅读:UniMS-RAG: Unified Multi-Source RAG for Personalised Dialogue

UniMS-RAG: Unified Multi-Source RAG for Personalised Dialogue(https://arxiv.org/abs/2401.13256) https://github.com/jiangnanboy/paper_read_note一.概述本研究探讨如何分解RAG过程,加入多文件检索、记忆和个人信息等元素。大型语言模型(llm)在自然语言任务中表现出色…

Windows defender:威胁服务已经停止

前言 最近遇到了一件棘手的事情,Windows defender无法启动,Windows更新失败。 我是发现电脑的好多文件被劫持,图片,excel表格,pdf文档,好多文件后缀被改为.locked,想解锁得花费0.1bit,大概5万元。 网上的操作挺多的,又是命令行又是搞注册表的,没啥卵用。 环境 版本:…