你知道在MyBatis中传参的#{}和${}的区别吗???

首先我们先将其区别列举出来:

首先演示sql注入:

基于上两篇博客的准备工作,继续开发:MyBatis的删除、修改、插入操作!!!-CSDN博客

#{}的使用

 UserMapper.java:

User testLogin(User user);

UserMapper.xml:

<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">select * from user where username=#{username} and password=#{password}</select>

测试类:

/*** 测试sql注入*/@Testpublic void testLogin(){UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User userInfo = new User();userInfo.setUsername("李星云");userInfo.setPassword("111");User user = userMapper.testLogin(userInfo);System.out.println(user);}

结果:

 ${}的使用:

 只需改动UserMapper.xml文件在的代码即可:

<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">select * from user where username='${username}' #'  and password='${password}'</select>

我们将这条sql语句复制到MySQL的管理工具中看看效果:

 这时我们运行程序,看能不能访问到数据:

很显然,我们成功访问到了数据,假设这是真正的登录页面,我们只需知道账号就可登录成功,那么显然${}在开发中并不能满足我们的需要。

底层区别:

 jdk类型转换:

单个简单类型参数:

#{}的使用:

 ${}的使用:

 

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

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

相关文章

gets函数的简单介绍

gets函数原型&#xff1a; 函数返回类型为字符串的地址char* gets函数特点&#xff1a; 1: 接收换行符之前的所有字符&#xff0c;直到遇到\n或\0为止 所以有时运用scanf不能输入&#xff08;原因&#xff1a;scanf遇到空格停止&#xff0c;而gets函数遇到空格不停止&#x…

金三银四精选面试题系列

Java中有哪几种方式来创建线程执行任务&#xff1f; 1. 继承Thread类 public class ZhouyuThread extends Thread{public static void main(String[] args) {ZhouyuThread thread new ZhouyuThread();thread.start();}Overridepublic void run() {System.out.println("h…

如何选择数字化转型顾问

在进行数字化转型时&#xff0c;第一步也是最重要的一步是深刻了解你的业务需求&#xff0c;这一基本流程涉及对企业的目标、挑战和抱负进行全面分析。必须提出关键问题&#xff1a;你通过数字化转型寻求哪些具体结果?主要目标是优化运营效率、提升客户体验&#xff0c;还是使…

连接SSH报错 / 连接容器SSH

连接SSH报错 / 连接容器SSH 前言被控端主控端连接失败 前言 本文介绍如何通过SSH方式远程连接Linux被控端&#xff0c;并介绍如何解决连接失败问题。 此方法同样适用于SSH连接Docker容器。 被控端 被控端一般为Linux&#xff0c;默认已安装ssh&#xff0c;但需要手动安装ope…

嵌入式中串口输入

学习目标 掌握串口初始化流程掌握串口接收逻辑了解中断接收逻辑熟练掌握串口开发流程学习内容 需求 串口接收PC机发送的数据。 串口数据接收 串口初始化 static void USART_config() {uint32_t usartx_tx_rcu = RCU_GPIOA;uint32_t usartx_tx_port = GPIOA;uint32_t usartx…

使用终端启动若依ruoyi

使用终端启动若依ruoyi 01 找到ruoyi-ui文件夹 02 cmd界面两个指令 npm i 下载完成后出现这个界面即为成功 npm run dev 加载结束后出现端口号即可 03 默认账号密码 访问localhost8080可得以上界面默认账号是admin默认密码是damin123

【YOLOv8量化】普通CPU上加速推理可达100+FPS

NNCF介绍 OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架)&#xff0c;通过对OpenVINO IR格式模型的压缩与量化更好的提升模型在OpenVINO框架上部署的推理性能&#xff0c;github。 https://github.com/openvinoto…

C语言-> 文件操作(函数满屏)

系列文章目录 前言 ✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青_C语言,数据结构,函数-CSDN博客 目的&#xff1a;学习文件操作&#xff0c;即…

Python 爬虫之简单的爬虫(四)

爬取动态网页&#xff08;下&#xff09; 文章目录 爬取动态网页&#xff08;下&#xff09;前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取并保存4.保存文档 总结 前言 上篇主要讲了如何去爬取数据&#xff0c;这篇来讲一下如何在获取的同时将数据整…

原子学习笔记2——输入设备应用编程

一、输入类设备介绍 1、输入设备 常见的输入设备有鼠标、键盘、触摸屏、遥控器、电脑画图板等&#xff0c;用户通过输入设备与系统进行交互。 2、input子系统 常见的输入设备有鼠标、键盘、触摸屏、遥控器、电脑画图板等&#xff0c;用户通过输入设备与系统进行交互。 基于…

Java中线程状态的描述

多线程-基础方法的认识 截止目前线程的复习 Thread 类 创建Thread类的方法 继承Thread类,重写run方法实现Runnable接口,重写run方法使用匿名内部类继承Thread类,重写run方法使用匿名内部类实现Runnable接口,重写run方法使用Lambda表达式 run方法中的所有的代码是当前线程对…