MyBatis mapper文件引用变量#{}与${}差异

默认,使用#{}语法,MyBatis会产生PreparedStatement中。而且安全的设置PreparedStatement參数,这个过程中MyBatis会进行必要的安全检查和转义。

演示样例1:

运行SQL:Select * from emp where name = #{employeeName}

參数:employeeName=>Smith

解析后运行的SQL:Select * from emp where name = ?

运行SQL:Select * from emp where name = ${employeeName}

參数:employeeName传入值为:Smith

解析后运行的SQL:Select * from emp where name =Smith

综上所述、${}方式会引发SQL注入的问题、同一时候也会影响SQL语句的预编译。所以从安全性和性能的角度出发。能使用#{}的情况下就不要使用${}

可是${}在什么情况下使用呢?

有时候可能须要直接插入一个不做不论什么改动的字符串到SQL语句中。这时候应该使用${}语法。

比方,动态SQL中的字段名,如:ORDER BY ${columnName}

注意:当使用${}參数作为字段名或表名时、需指定statementType为“STATEMENT”,如:

<select id="queryMetaList" resultType="Map" statementType="STATEMENT">Select * from emp where name = ${employeeName} ORDER BY ${columnName}</select>

版权声明:本文博客原创文章,博客,未经同意,不得转载。

[DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异的更多相关文章

  1. mybatis的Mapper文件配置

    一.resultMap resultMap 元素是 MyBatis 中最重要最强大的元素. 该配置节点下如下子节点配置 id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能 const ...

  2. 自动生成Mybatis的Mapper文件

    自动生成Mybatis的Mapper文件 工作中使用mybatis时我们需要根据数据表字段创建pojo类.mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,myba ...

  3. MyBatis的Mapper文件的foreach标签详解

    MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据.如:使用foreach来拼接in子语句. 在学习MyBatis M ...

  4. 逆向工程生成的mybatis中mapper文件。mapper接口,实例化成对象

    逆向工程生成的mybatis中mapper文件中,*mapper文件只是接口,而不是类文件.但是却可以通过spring的容器获得实例. 例如: //1.获得mapper代理对象,从spring容器获得 ...

  5. mybatis写mapper文件注意事项(转)

    原文链接:http://wksandy.iteye.com/blog/1443133 xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响 < < > & ...

  6. Spring配置扫描mybatis的mapper文件注意:

    一般会将不业务的mapper文件放到不同的包中: spring配置扫描就需要配置下面的方式(两个*): <!-- mybatis文件配置,扫描所有mapper文件 --> <bean ...

  7. mybatis的mapper文件的大于号特殊符号使用

    第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE 1 = 1 AND start_date  <= CURRENT_DA ...

  8. 使用逆向工程生成mybatis的Mapper文件

    之前有写过一篇博客: 使用MyBatis Generator自动生成MyBatis的代码链接:http://www.cnblogs.com/klslb/p/6908535.html 这个太麻烦了,而且 ...

  9. 【坑】解决maven管理SSM中mybatis的mapper文件扫描失败的问题

    文章目录 前言 改进方式来替换原始的使用方式 后记 好久没有写博客了,11月底来到公司实习,上个月写个小demo,趁此回顾下SSM,今天将最近的积累记录下: 前言 在学习 mybatis 的时候,都知 ...

随机推荐

  1. Oracle SQL Lesson (10) - 使用DDL语句创建和管理表

    数据库对象TableViewSequenceIndexSynonym 对象名称最长30个字符,不能与当前用户下其他对象重名.create table "select" as sel ...

  2. Blend4精选案例图解教程(三):一键拖拽

    原文:Blend4精选案例图解教程(三):一键拖拽 拖拽效果,常规实现方法是定义MoveLeftDwon.MoveLeftUp.MouseMove事件,在Blend的世界里,实现对象的拖拽,可以不写一 ...

  3. BZOJ 1150 CTSC2007 数据备份Backup 堆+馋

    标题效果:给定一个长度n−1n-1的序列,要求选出kk个不相邻的数使得和最小 费用流显然能跑.并且显然过不去- - 考虑用堆模拟费用流 一个错误的贪心是每次取最小.这样显然过不去例子 我们把[每次取最 ...

  4. Linux中查看socket状态(转)

    Linux中查看socket状态:cat /proc/net/sockstat #(这个是ipv4的) sockets: used 137 TCP: inuse 49 orphan 0 tw 3272 ...

  5. ./startup.sh: Permission denied

    今天在Linux上部署项目,之前报过这个错误,通过下面方式攻克了.如今发出来备份一下: LINUX权限-bash: ./startup.sh: Permission denied 运行./startu ...

  6. 输出A打头的字符串

    题目描述 输出n个字符串,把其中以字母A打头的字符串输出. 输入 第一行 n 第二行到第n+1行,每行一个字符串 输出 A打头的字符串 样例输入 3 Ada Bob Alice 样例输出 Ada Al ...

  7. 信息二战炸弹:中国到美国咨询公司Say no

    疯抢/文 在禁止Windows8操作系统參与政府採购,以及在中国销售的全部外国IT产品和服务都须通过新的安全审查之后,英国<金融时报>今天报料中国已禁止国企使用美国咨询公司服务. 这则消息 ...

  8. MySQL InnoDB数据库备份与还原

    备份 进入cm黑窗口 输入下列命令 mysqldump -u 用户名 -p 数据库名称> c:\11.sql 回车执行 恢复 进入cm黑窗口 输入下列命令 mysql>use dbtest ...

  9. RH033读书笔记(16)-Lab 17 Installation and Administration Tools

    Lab 17 Installation and Administration Tools Goal: Become familiar with system configuration tools a ...

  10. REQIMPORT-购买内部应用程序(R12.2.3)

     採购内部申请(R12.2.3) --US Program:Requisition Import Short Name:REQIMPORT Application:Purchasing Execu ...