mybatis的$和#详解分析

MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用

MyBatis中#{}和${}的作用与区别

 MyBatis中#{}和${}的作用与区别_陈三千的博客-CSDN博客_mybatis${}有什么用

在mybatis中#和$的主要区别是:#传入的参数在SQL中显示为字符串,#方式能够很大程度防止SQL注入;$传入的参数在SQL中直接显示为传入的值,$方式无法防止SQL注入。

1、传入的参数在SQL中显示不同

#{} 将传入的参数(数据)在SQL中显示为字符串,会对自动传入的数据加一个双引号。
「对自动传入的数据加一个双引号」

例:使用以下SQL语句

SELECT id,name FROM student WHERE id =#{id};

//当我们传递的参数id为 "1" 时,上述 SQL 的解析为:

SELECT id,name FROM student WHERE id ="1";

${} 将传入的参数(数据)直接显示生成在SQL中

例:使用以下SQL语句

SELECT id,name FROM student WHERE id =${id};

//当我们传递的参数id为 "1" 时,上述 sql 的解析为:

SELECT id,name FROM student WHERE id =1;

2、#{}可以防止SQL注入的风险(语句的拼接);但${}无法防止SQL注入。

3、${}方式一般用于传入数据库对象,例如:表名用参数传递进SQL。

4、大多数情况下还是经常使用#{},一般能用#{}的就别用${};但有些情况下必须使用${},例:MyBatis排序时使用ORDER BY动态参数时需要注意,得用${}而不是#{}。

5、#{} 的参数替换是发生在 DBMS 中,而 ${} 则发生在动态解析过程中。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${};两者都是动态的向sql语句中传入需要的参数。
————————————————
版权声明:本文为CSDN博主「陈三千」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38088772/article/details/114503189

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

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

相关文章

IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法

转载自 IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法 最近在测试兼容性问题的时候发现,使用Ajax的GET请求向后台获取响应结果时,如果是IE8浏览器,第一次发送请求时会得到正常的返回结果,然后当再去发送相同请求访…

springboot获取多个请求参数_springboot获取URL请求参数的多种方式

1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。/*** 1.直接把表单的参数写在Controller相应的方法的形参中* param username* param password* return*/RequestMapping("/addUser1")public S…

Mysql常用语法总结

Mysql常用语法总结如下: #连接mysql数据库(Dos下面) mysql -u root -p 123 #创建数据库 create database myschool; #创建表 drop table student create table student ( id int comment 编号, name CHAR(10) comment 姓名 )charset utf8drop table if exis…

基数排序+推导过程

图解 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class RadixSort {public static void main(String[] args) {//53, 3, 542, 748, 14, 214int arr[] {53, 3, 542, 748, 14, 214};radixSort(arr);}//基…

Xamarin的坑 - 绑定(一) - 拿微信iOS SDK 简单说起

编者语:Xamarin 并入微软快一年了,在国内推广还是慢,主要有两个方面,Xamarin在国内的本地化不足真正在国内的解决方案基本上没有,第二就是和本土的一些主要SDK接入案例基本上也没有。上述原因令不少企业放弃使用这个很…

JS刷新页面的几种方法

转载自 JS刷新页面的几种方法 Javascript刷新页面的几种方法: 1 history.go(0) 2 location.reload() 3 locationlocation 4 location.assign(location) 5 document.execCommand(‘Refresh‘) 6 window.navigate(location) 7 location.replace(location) …

16岁应该遵循什么_成人学习一般遵循的规律

成人学习一般遵循的规律第一阶段是激发起对过去的经历的回忆,让学习者回头想想自己以前做了些什么,是在什么情况下运用什么方法做的;第二阶段,启发学习者对这些经历进行反思,检讨这些经历的成功与失败之所在&#xff0…

stream进行分组统计

// //groupingBy分组 // Map<Integer, Long> map houseList.stream().collect(Collectors.groupingBy(House::getBuildId, Collectors.counting())); // //控制台输出map // map.forEach((k,v)->{ // System.out.println("k"k",v"v)…

js实现页面跳转重定向的几种方式

转载自 js实现页面跳转重定向的几种方式 这篇文章主要介绍js实现页面跳转重定向的几种方式,需要的朋友可以参考下 第一种&#xff1a; <script language"javascript"type"text/javascript"> window.location.href"http://shanghepinpai.c…

二分查找+思路分析

思路分析 代码实现 package com.atguigu.search;/*** 创建人 wdl* 创建时间 2021/3/23* 描述*/ //注意&#xff1a;使用二分查找的前提是&#xff0c;该数组是有序的 public class BinarySearch {public static void main(String[] args) {int arr[]{1,8,10,89,1000,1234};int…

SQLServer On Linux Package List on CentOS

问题引出 “鸟儿啊&#xff0c;到底SQLServer on Linux肚里装了多少东西&#xff0c;在我们的CentOS系统安装了哪些物理文件呢&#xff1f;”&#xff0c;老鸟这天火急火燎的问道。“这个啊&#xff1f;让本鸟帮你一探究竟。”&#xff0c;菜鸟耐心回答道。 问题分析 菜鸟一边想…

开发环境 Minio 添加桶的操作流程-页面操作

命令操作 d开发环境 Minio 添加桶的操作流程_摇曳的精灵的博客-CSDN博客_minio创建桶 页面操作

python 可视化数据库_python实现地址分布可视化

当你知道某些详细地址信息&#xff0c;该如何利用。本文通过调用百度地图接口&#xff0c;实现用户可视化展示&#xff0c;便于更清楚地了解用户。注册百度地图开放平台帐号Python调用通过http调用接口格式如下&#xff1a;全选复制放进笔记http://api.map.baidu.com/geocoder/…

冬至快乐

男生关注会更帅&#xff0c;女生关注会更美&#xff01;冬至冬至到&#xff0c;吃水饺&#xff0c;颗颗都有年味道。头常挠&#xff0c;口常笑&#xff0c;睿智快乐常围绕。摇摇头&#xff0c;晃晃脑&#xff0c;轻松健康直到腰。扭扭臂&#xff0c;捏捏脚&#xff0c;健康到底…

JavaScript原生添加移除class的方法

转载自 JavaScript原生添加移除class的方法 1.JavaScript原生移除class方法 window.onload function () {var stamp document.getElementById("btGetCode"); //根据id查找到该标签removeClass(stamp, "can-code"); //调…

二分查找(一次查找多个相同的值)

package com.atguigu.search;import java.util.ArrayList; import java.util.List;/*** 创建人 wdl* 创建时间 2021/3/23* 描述*/ //注意&#xff1a;使用二分查找的前提是&#xff0c;该数组是有序的 public class BinarySearch {public static void main(String[] args) {int…

介绍Portable PDB

为了调试编译的应用程序&#xff0c;有必要将IL代码或二进制的机器代码与源代码行进行匹配。虽然数据可以嵌入在应用程序中&#xff0c;但这会显著增加EXE或DLL文件的大小。取而代之的是&#xff0c;通常会使用单独的“symbols”文件。在Windows平台上&#xff0c;这被称为PDB或…

RedisGeo实现增删改查 java计算指定坐标最近的距离并排序

利用Redis的Geo功能实现查找附近的位 - 云社区 - 腾讯云 package com.easy.hotel.pms.util;import com.easy.hotel.common.data.tenant.TenantContextHolder; import com.easy.hotel.pms.mapper.CommunityMapper; import com.easy.hotel.pms.service.impl.CommunityServiceImpl…

openglshader实现虚拟场景_opengl+shader

1、环境介绍&#xff1a;】软件 &#xff1a;visual studio编程语言&#xff1a;opengl库 &#xff1a;glad glfw【2、内容介绍】-- 绘制场景&#xff1a;场景1&#xff1a; 一片沙漠中&#xff0c;一本书&#xff0c;四周出现 5 个自球&#xff0c;逐渐被黑雾笼罩场景2&#x…