Mybatis 传参的方式

第一种情形,传入单个参数  userId

service层:

@Override
public User getUserInfo(Integer userId) {User user = userMapper.getUserInfo(userId);//省略 业务代码...return user;
}

mapper层:

User getUserInfo(Integer userId);

mapper.xml:

<!--查询-->
<select id="getUserInfo" resultType="com.demo.elegant.pojo.User">select userId from userswhere userId=#{userId};
</select>

第二种情况,传入多个参数  userId,sex  使用索引对应值

按照顺序传参

注意mapper层和xml层!

service层:

@Override
public User getUserInfo(Integer userId,String sex) {User user = userMapper.getUserInfo(userId,sex);//省略 业务代码...return user;
}

mapper层:

User getUserInfo(Integer userId,String sex);

mapper.xml:

<!--查询-->
<select id="getUserInfo" resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{0} and sex=#{1};
</select>

第三种情形,传入多个参数  userId,sex 使用注解@Param 

service层

@Overrid
public User getUserInfo(Integer userId,String sex) {User user = userMapper.getUserInfo(userId,sex);//省略 业务代码...return user;
}

mapper层:

User getUserInfo(@Param("userId")Integer userId,@Param("sex")String sex);

mapper.xml:

<!--查询-->
<select id="getUserInfo" resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{userId} and sex=#{sex};
</select>

第四种情形,传入多个参数   使用User实体类传入

service层:

@Override
public User getUserInfo(User user) {User userInfo = userMapper.getUserInfo(user);//省略 业务代码...return userInfo;
}

mapper层:

User getUserInfo(User User);

mapper.xml:

<!--查询-->
<select id="getUserInfo"  parameterType="User"  resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{userId} and sex=#{sex};
</select>

第五种情形,传入多个参数, 使用Map类传入

service层:

@Override
public User getUserInfo(Map map) {User user = userMapper.getUserInfo(map);//省略 业务代码...return user;
}

mapper层:

User getUserInfo(Map map);

mapper.xml层:

<!--查询-->
<select id="getUserInfo"  parameterType="Map"  resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{userId} and sex=#{sex};
</select>

第六种情形,传入多个参,使用 map封装实体类传入

这种情况其实使用场景比较少,因为上面的各种姿势其实已经够用了

service层:

@Override
public User getUserInfo1(Integer userId,String sex) {User userInfo = new User(userId,sex);Map<String,Object> map=new HashMap<String,Object>();map.put("user",userInfo);User userResult=  userMapper.getUserInfo(map);//省略 业务代码...return userResult;
}

mapper层: 

User getUserInfo(Map map);

mapper.xml:

<!--查询-->
<select id="getUserInfo"  parameterType="Map"  resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{userInfo.userId} and sex=#{userInfo.sex};
</select>

第七种情形,即需要传入实体类,又需要传入多个单独参,使用注解@Param 

service层:

@Override
public User getUserInfo(User user,Integer age) {User userResult = userMapper.getUserInfo(user,age);//省略 业务代码...return userResult;
}

mapper层: 

User getUserInfo(@Param("userInfo") User user,@Param("age") Integer age);

mapper.xml:

<!--查询-->
<select id="getUserInfo"   resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere userId=#{userInfo.userId} and sex=#{userInfo.sex} and age=#{age};
</select>

List传参

service层:

List<Integer>list= new ArrayList>();list. add(44);list. add(45);list. add(46);
List<SysUser> sysUser= sysUserMapper. selectList(list);

mapper层:

 List<SysUser> selectList(List<Integer> ids);

mapper.xml:

 <select id="selectList"resultMap"BaseResultMap">select<include refid="Base_Column_List"/>from sys_userwhere id in<foreach item="item" index="index" collection="list"open="("separator","close=")"> #{item}</foreach></select>

数组传参

service层:

List<SysUser> sysuser= sysUserMapper. selectlist(new Integer[]{44,45,46});

mapper层:

List<SysUser> selectList(Integer[]ids);

mapper.xml:

 <select id="selectList"resultMap"BaseResultMap">select<include refid="Base Column_List"/>from sys userwhere id in<foreach item="item" index="index collection="array"open="("separator="," close=")"> #{item}</foreach></select>

${}

 使用这个的时候,只需要注意,如果是传递字段名或者表名,是直接做参数传入即可,

但是如果作为sql'语句里面使用的值, 记得需要手动拼接 ' ' 号。

例如, 传入单个参数 sex:

service层:

@Override
public User getUserInfo(String sex) {sex="'"+sex+"'";User user = userMapper.getUserInfo(sex);//省略 业务代码...return user;
}

mapper层:

User getUserInfo(String sex);

mapper.xml:

<!--查询-->
<select id="getUserInfo"   resultType="com.demo.elegant.pojo.User">select userIdfrom userswhere sex=${sex};
</select>

多个参数,那也就是使用注解@Param取名字解决即可。

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

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

相关文章

浅层神经网络时间序列预测和建模

目录 时间序列网络 NARX 网络 NAR 网络 非线性输入-输出网络 定义问题 使用神经网络时间序列拟合时间序列数据 使用命令行函数拟合时间序列数据 选择数据 选择训练算法 创建网络 准备要训练的数据 划分数据 训练网络 测试网络 查看网络 分析结果 闭环网络 向…

第七课:计算机网络、互联网及万维网(WWW)

第七课&#xff1a;计算机网络、互联网及万维网&#xff08;WWW&#xff09; 第二十八章&#xff1a;计算机网络1、局域网 Local Area Networks - LAN2、媒体访问控制地址 Media Access Control address - MAC3、载波侦听多路访问 Carrier Sense Multiple Access - CSMA4、指数…

BFC(解决高度塌陷的问题)

BFC&#xff08;解决高度塌陷的问题&#xff09; 高度塌陷&#xff1a;子元素设置了浮动&#xff0c;父元素的高度随之x 元素开启BFC元素之后的特点&#xff1a; 1.开启BFC的元素不会被浮动的元素所覆盖。 2.开启BFC的父元素和子元素的外边距不会重叠 3.开启BFC的元素可以…

LeetCode 面试题 01.06. 字符串压缩(443. 压缩字符串)

对于算法题&#xff0c;按题型类别刷题才会更有成效&#xff0c;因此我这里在网上搜索并参考了下 “&#x1f525; LeetCode 热题 HOT 100” 的题型归类&#xff0c;并在其基础上做了一定的完善&#xff0c;希望能够记录自己的刷题历程&#xff0c;有所收获&#xff01;点击下发…

Stable Diffusion 系列教程 - 5 ControlNet

ControlNet和LORA的定位都是对大模型做微调的额外网络。作为入门SD的最后一块拼图是必须要去了解和开发的。为什么ControlNet的影响力如此的大&#xff1f;在它之前&#xff0c;基于扩散模型的AIGC是非常难以控制的&#xff0c;扩散整张图像的过程充满了随机性。这种随机性并不…

激光 GPS 卫星实现无边界精度

GPS 卫星领域已经发生了重大创新&#xff0c;将变得更加精确和强大。我们正在谈论激光后向反射器阵列&#xff08; LRA&#xff09;的发展。 这些可以精确跟踪地球的形状、自转和环境变化&#xff0c;从而扩展卫星的能力。 GPS卫星的主要用途是确定各种情况下的位置&#xff…

C++继承与派生——(7)类型兼容原则

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 站在巨人的肩上&#xff0c;是为了超过…

Unity检测地面坡度丨人物上坡检测

Unity检测地面坡度 前言使用 代码 前言 此功能为&#xff0c;人物在爬坡等功能时可以检测地面坡度从而完成向某个方向给力或者完成其他操作 使用 其中我们创建了脚本GradeCalculation&#xff0c;把脚本挂载到人物上即可&#xff0c;或者有其他的使用方式&#xff0c;可自行…

nodejs+vue+ElementUi摄影预约服务网站系统91f0v

本系统提供给管理员对首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;员工管理&#xff0c;摄影套餐管理&#xff0c;套餐系列管理&#xff0c;客片欣赏管理&#xff0c;摄影预约管理&#xff0c;摄影订单管理&#xff0c;取片通知管理&#xff0c;摄影评价管理&…

oj习题8577 合并顺序表

8577 合并顺序表 若线性表中数据元素相互之间可以比较&#xff0c;且数据元素在表中按值递增或递减&#xff0c;则称该表为有序表。 编写算法&#xff0c;将两个非递减有序顺序表A和B合并成一个新的非递减有序顺序表C。 输入格式 第一行&#xff1a;顺序表A的元素个数 第二行&…

Linux 服务器安全策略技巧:实施网络入侵防御系统

引言 在当今数字化时代,网络安全对于任何企业和个人都至关重要。特别是对于使用Linux服务器的用户来说,实施网络入侵防御系统是确保服务器安全的关键一步。本文将介绍一些Linux服务器安全策略技巧,帮助您保护服务器免受网络入侵的威胁。 1. 更新操作系统和软件 保持操作系…

KEPServerEX 6 之 GE Ethernet 连接FANUC ROBOT机器人实战

GE Ethernet Driver 连接FANUC ROBOT机器人 ---------------------------- GE Fanuc介绍 GE Fanuc是GE公司控制系统部门的一部分,成立于1998年。其主要业务涵盖工业自动化、控制系统、PLC和组态软件等领域。其产品可用于包括自动化、过程自动化、国防、汽车制造、通讯、医疗…

【linux】Linux管道的原理与使用场景

Linux管道是Linux命令行界面中一种强大的工具&#xff0c;它允许用户将多个命令链接起来&#xff0c;使得一个命令的输出可以作为另一个命令的输入。这种机制使得我们可以创建复杂的命令链&#xff0c;并在处理数据时提供了极大的灵活性。在本文中&#xff0c;我们将详细介绍Li…

LangChain.js 实战系列:如何统计大模型使用的 token 使用量和花费

&#x1f4dd; LangChain.js 是一个快速开发大模型应用的框架&#xff0c;它提供了一系列强大的功能和工具&#xff0c;使得开发者能够更加高效地构建复杂的应用程序。LangChain.js 实战系列文章将介绍在实际项目中使用 LangChain.js 时的一些方法和技巧。 统计调用大模型的 to…

Peter算法小课堂—浮点数危机

大家先想想下面这个代码运行结果&#xff1a; #include <bits/stdc.h> using namespace std; int main(){double x5.2;double y4.11.1;cout<<(x<y)<<endl;cout<<x-y<<endl;return 0; } 最终发现&#xff0c; &#xff1f;&#xff1f;&…

Unity之ShaderGraph如何实现瓶装水效果

前言 有一个场景在做效果时,有一个水瓶放到桌子上的设定,但是模型只做了个水瓶,里面是空的,所以我就想办法,如何做出来瓶中液体的效果,最好是能跟随瓶子有液体流动的效果。 如下图所示: 水面实现 水面效果 液体颜色设置 因为液体有边缘颜色和内里面颜色,所以要分开…

WEB渗透—PHP反序列化(十一)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

【力扣题解】P106-从中序与后序遍历序列构造二叉树-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P106-从中序与后序遍历序列构造二叉树-Java题解&#x1f30f;题目描述&#x1f4a1;题…

2024 通义语音 AI 技术图景,大模型引领 AI 再进化

自 1956 年达特茅斯会议上&#xff0c;约翰麦卡锡首次提出了“人工智能”这一术语。AI 在此后七十年的发展中呈现脉冲式趋势&#xff0c;每隔 5-10 年会出现一次技术革新和域定。在这一技术探索进程之中&#xff0c;预训练基础模型逐渐成为主流探索方向&#xff0c;受到学术界和…

C#下将点云数据保存为PLY格式

目前没有找到C#下将点云数据保存为PLY格式的库&#xff0c;查看了一下PLY格式&#xff0c;所以自己写了个方法实现点云数据保存PLY格式 public static string SavePointCloudToPLY(string No, float[] x, float[] y, float[] z){ string result "";Task.Run(() >…