MyBatis ---- MyBatis获取参数值的两种方式(重点)

news2024/11/25 12:53:46

MyBatis ---- MyBatis获取参数值的两种方式(重点)

  • 1. 单个字面量类型的参数
  • 2. 多个字面量类型的参数
  • 3. map集合类型的参数
  • 4. 实体类类型的参数
  • 5. 使用@Param标识参数

MyBatis 获取参数值的两种方式:${}#{}

${}:本质就是字符串拼接
#{}:本质就是占位符赋值
${} 使用字符串拼接的方式拼接 sql,若为字符串类型或日期类型的字符进行赋值时,需要手动加单引号
#{} 使用占位符赋值的方式拼接 sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

1. 单个字面量类型的参数

    /**
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    User getUserByUsername(String username);
    <!--User getUserByUsername(String username);-->
    <select id="getUserByUsername" resultType="user">
        select * from t_user where username = #{username};
    </select>

在这里插入图片描述

    <!--User getUserByUsername(String username);-->
    <select id="getUserByUsername" resultType="user">
        select * from t_user where username = '${username}';
    </select>

在这里插入图片描述

2. 多个字面量类型的参数

若 mapper 接口中的方法参数为多个时
此时 MyBatis 会自动将这些参数放在一个 map 集合中,以 arg0,arg1… 为键,以参数为值;以 param1,param2… 为键,以参数为值;因此只需要通过 ${}#{} 访问 map 集合的键就可以获取相对应的值,注意 ${} 需要手动加单引号

    /**
     * 检查用户是否登录成功
     * @param username
     * @param password
     * @return
     */
    User checkLogin(String username, String password);
    <!--User checkLogin(String username, String password);-->
    <select id="checkLogin" resultType="user">
        select * from t_user where username = #{param1} and password = #{param2};
    </select>

在这里插入图片描述

    <!--User checkLogin(String username, String password);-->
    <select id="checkLogin" resultType="user">
        select * from t_user where username = #{arg0} and password = #{arg1};
    </select>

在这里插入图片描述

3. map集合类型的参数

若 mapper 接口中的方法需要的参数为多个时,此时可以手动创建 map 集合,将这些数据放在 map 中只需要通过 ${}#{} 访问 map 集合的键就可以获取相对应的值,注意 ${} 要手动加单引号

    /**
     * 使用map结合作为参数检查用户是否登录成功
     * @param map
     * @return
     */
    User checkLoginByMap(Map<String, String> map);
    <!--User checkLoginByMap(Map<String, String> map);-->
    <select id="checkLoginByMap" resultType="user">
        select * from t_user where username = #{username} and password = #{password};
    </select>

在这里插入图片描述

4. 实体类类型的参数

若 mapper 接口中的方法参数为实体类对象时
此时可以使用 ${}#{},通过访问实体类独享中的属性名获取属性值,注意 ${} 需要手动加单引号

    /**
     * 使用实体类插入数据
     * @param user
     * @return
     */
    int insert(User user);
    <!--int insert(User user);-->
    <insert id="insert">
        insert into t_user values(null, #{username}, #{password}, #{age}, #{sex}, #{email});
    </insert>

在这里插入图片描述

5. 使用@Param标识参数

可以通过 @Param 注解标识 mapper 接口中的方法参数
此时,会将这些参数放在 map 集合中,以 @Param 注解的 value 属性值为键,以参数为值;以 param1,param2… 为键,以参数为值;只需要通过 ${}#{} 访问 map 集合就可以获取相应的值,注意 ${} 需要手动加单引号

    /**
     * 通过@Param注解验证用户登录
     * @param username
     * @param password
     * @return
     */
    User checkLoginByParam(@Param("username") String username, @Param("password") String password);
    <!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);-->
    <select id="checkLoginByParam" resultType="user">
        select * from t_user where username = #{username} and password = #{password};
    </select>

在这里插入图片描述

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

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

相关文章

swift 闭包closure 省略

闭包 表达式 reversedNames names.sorted(by: { (s1: String, s2: String) -> Bool inreturn s1 > s2 }) 可省略的地方 省略返回类型 没有参数可以省略 in 这一样 省略参数类型 省略圆括号&#xff0c;这个是如果就一个参数&#xff0c;并且我们编译器可以推断出其类型…

Python基础(一)基本类型

一、Number数字 1.1 注意事项 Python支持int、float、bool和complex类型。 complex是复数类型abj&#xff08;或complex(a,b))&#xff0c;a表示实部&#xff0c;b表示虚部&#xff0c;a b本身是float类型。 Python使用变量时&#xff0c;无需声明变量。 a3 # 自动声明为i…

微信小程序|基于小程序+C#制作一个电子书阅读器

文章目录一、文章前言二、开发流程2.1、开发工具2.2、页面实现2.3、数据库设计2.4、API实现一、文章前言 书籍是人类进步的阶梯&#xff0c;各位小伙伴在使用市面上各类阅读器进行阅读的时候是否有被层出不穷的广告或者及其不友好的用户体验所困扰呢&#xff0c;为何不制作一个…

矢量网络分析仪是什么?矢量网络分析仪的组成

一、矢量网络分析仪是什么 矢量网络分析仪是一款高性能、大动态范围、低噪声的矢量网络分析仪。频率范围涵盖整个移动通信频段&#xff0c;全双端口S参数测量&#xff0c;测量精度高&#xff0c;测试稳定性好&#xff0c;测量速度快。 用途&#xff1a;可广泛应用于移动通信、军…

realme手机适合什么蓝牙耳机?适合realme手机的蓝牙耳机推荐

自从众多手机厂商取消3.5mm耳机接口之后&#xff0c;蓝牙耳机作为人们通勤、旅行时经常携带的设备&#xff0c;realme手机近几年也受到很多人的喜爱&#xff0c;那么在品牌众多的蓝牙耳机中如何挑选出最适合自己的呢&#xff1f;今天小编就来为大家分享几款适合realme手机的蓝牙…

天翼云Serverless边缘容器下沉服务 促进企业聚焦业务创新

当前,我国经济社会各领域正加速向数字化转型迈进,随之涌现出海量的数据处理需求在边缘侧不断产生。根据信通院发布的数据显示,2021年我国边缘计算市场规模已经达到436.4亿元,其中边缘硬件规模市场为290.2亿元,边缘软件与服务市场规模达146.2亿元,年平均增速超过50%,预计2024年边…

包装类和泛型

包装类和泛型严格来说算得上是JavaSE的内容&#xff0c;为什么他们要放在数据集合中&#xff1f; 这和集合类有关&#xff0c;我们在集合类中将会用到大量的泛型和包装类。 1. 包装类 基本介绍 包装类&#xff08;wrapper&#xff09;是针对八大基本数据类型相应的引用类型…

云安全系列4:解析云安全工具集

随着组织越来越多地将数据和应用转移到云端&#xff0c;云安全在确保工作负载安全方面变得至关重要。Gartener 就表示&#xff1a;“云优先战略现在已十分普遍&#xff0c;甚至在不愿承担风险的企业机构中也是如此。但由于缺乏确保安全云计算部署所必需的技能和工具&#xff0c…

pytest文档83 - 把收集的 yaml 文件转 Item 用例并运行

前言 上一篇通过用例收集钩子 pytest_collect_file 把 yaml 文件收集起来的&#xff0c;仅仅只是收集到用例&#xff0c;还不能执行。 接下来详细讲解&#xff0c;如何把yaml 文件的内容&#xff0c;转成Item 用例去执行。 pytest_collect_file 收集钩子 准备一个待执行的YA…

Oracle SQL执行计划操作(12)——DDL及DML相关操作

14. DDL及DML相关操作 该类操作与DDL及DML类SQL语句相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。另需注意,该类操作会造成数据库对象或数据的改变。 1)CREATE TABLE STATEMENT 创建数据表。该操作出现于通过create[global …

PHP 开发-XAMPP 安装

开发环境&#xff1a;Windows10&#xff0c;XAMPP&#xff08;x64-7.4.33&#xff09;&#xff0c;Netbeans。 XAMPP 安装 官网下载XAMPP安装包&#xff0c;我下载的版本 x64-7.4.33。安装包中相关软件版本&#xff08;官网上可查询&#xff09;&#xff1a; Apache 2.4.54M…

Java并发编程--变量可见性、避免指令重排,还得是用它

那怎么保证程序里一个线程对共享变量的修改能立马被其他线程看到了&#xff1f;这时候有人会说了&#xff0c;加锁呀&#xff0c;前面不就是因为加锁成本太高才使用的 ThreadLocal的吗&#xff1f;怎么又说回去了&#xff1f; 其实CPU每个核心也都是有缓存的&#xff0c;今天要…

基于el-form实现自动展开/收起的查询条件组件

说明 如果查询条件过多&#xff0c;影响页面的展示效果&#xff0c;网上看了一些实现自动展开/收起的&#xff0c;有根据最小高度控制的&#xff0c;有基于条件的如v-show来控制&#xff0c;下面借助js原生的hidden属性实现要素的显示、隐藏控制。 先一下效果&#xff1a; 优…

web扫码登录

文章目录需求流程交互流程服务交互流程关键思路代码生成二维码&#xff0c;返回给PC展示轮询查询二维码状态APP扫码请求登录总结需求 pc端实现app扫码登录 流程 交互流程 服务交互流程 关键思路 主要问题在于如何识别APP端用户&#xff0c;然后传递给PC端已经登录成功 通过…

小程序瀑布流实现

什么是瀑布流布局 瀑布流布局&#xff0c;一般等宽&#xff0c;不等高的列表排列 原理是找出高度之和最小的那一列&#xff0c;在高度最小列继续添加元素 可以通过 absolute 定位实现&#xff0c;动态计算每一项的 top 和 left 封装瀑布流方法 function getAllRect(context…

HTML期末作业课程设计期末大作业--小米网站开发者平台首页 1页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制| HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&#x…

MyBatis学习笔记(2022-11-30)

熬过无人问津的日子才会有诗和远方。 文章目录一、MyBatis简述二、快速入门三、MyBatis配置文件详解1. MyBatis核心配置文件1.1 configuration&#xff08;配置&#xff09;1.2 properties&#xff08;属性&#xff09;1.3 environments&#xff08;环境配置&#xff09;1.4 ty…

vue项目 element UI input框扫码枪扫描过快 出现数据丢失问题(已解决二)

项目需求: 输入框要掉两个接口&#xff0c;根据第一个验证接口返回的code&#xff0c;弹不同的框&#xff0c;点击弹框确认再掉第二个接口 根据客户现场反应&#xff0c;扫描枪快速扫描会出现 料号前几位字符丢失 不完整的问题。于是开始了测试之路。 解决方案探索 1.首先考…

数据可视化,销量第一的新能源汽车是什么?比亚迪新能源汽车销量接近60万辆

去年以来&#xff0c;新能源汽车火热度席卷全球&#xff0c;中国的新能源汽车无论制造或者销售&#xff0c;数量增长迅猛。下面小编用一款数据可视化软件&#xff0c;带你用可视化数据解读高端制造背后&#xff0c;中国新能源汽车的具体销售情况。同样如果你工作上有数据报表需…

[附源码]计算机毕业设计springboot酒店物联网平台系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…