MyBatis中#与$取值有什么区别


这篇文章给大家分享的是有关MyBatis中#与$取值有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言
动态SQL是MyBatis的主要特性之一,在mapper中定义的参数传到XML中之后,在查询之前 mybatis 会对其进行动态解析。MyBatis 为我们提供了两种支持动态SQL的语法:#{} 以及 ${}。二、案例
下面我们通过相关案例来演示一下$与#的用法。UserMapper.xml文件中查询语句最初写法测试控制台打印SQL如下:现在我们修改一下语句,将where id = #{id} 修改成 ${id},如下:再次测试,控制台打印SQL如下:可以观察到两条SQL语句的不同,下面一条以${}语句获取参数值时,直接将数据取出来拼接到了SQL语句中;而我们用#{}取得值是以占位符的形式出现。
#{}:是以预编译的方式,将参数设置到SQL语句中,跟我们原来学JDBC时一样,能够很大程度防止sql注入
${}:取出来的值直接拼接到SQL语句中,会有安全问题,无法防止Sql注入。大多数情况下我们取参数的值都是使用的#{}, 香港云主机但是有些情况像表名,排序时使用orderby动态参数时需要注意,用$而不是#。修改UserMapper.xml:测试控制台打印如下:以#{}号方式取值,控制台报错。
那我们修改一下UserMapper.xml,修改成${}取值方式再次测试,控制台打印SQL正常:感谢各位的阅读!关于“MyBatis中#与$取值有什么区别”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

相关推荐: 怎么跳过win10系统创建账户的操作流程

这篇“怎么跳过win10系统创建账户的操作流程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么跳过win10系统创建账户的操作流程”文章吧。方…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/25 20:58
下一篇 07/25 20:59

相关推荐