MyBatis中井号与美元符号的区别

  1. #{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。

    select * from tablename where id = #{id}
    假设id的值为12,其中如果数据库字段id为字符型,那么#{id}表示的就是‘12‘,如果id为整型,那么id就是12,并且MyBatis会将上面SQL语句转化为jdbc的select * from tablename where id=?,把?参数设置为id的值。

  2. ${变量名}不进行数据类型匹配,直接替换。

    select * from tablename where id = ${id}
    如果字段id为整型,sql语句就不会出错,但是如果字段id为字符型, 那么sql语句应该写成select * from table where id = ‘${id}‘。

  3. #方式能够很大程度防止sql注入。
  4. $方式无法方式sql注入。
  5. $方式一般用于传入数据库对象,例如传入表名。
  6. 尽量多用#方式,少用$方式。

原文地址:https://www.cnblogs.com/Allen-Wei/p/9025536.html

时间: 2024-10-09 06:59:18

MyBatis中井号与美元符号的区别的相关文章

[转]ibatis中井号跟美元符号区别(#、$)

Mybatis中如何在SQL语句表名中使用参数 insert into prefix_${table_name} (a, b, c) values (#{a}, #{b}, #{c}) ${} 表示直接使用字面量(literal value) #{} 表示这个是个参数 如果 table_name 是 “ABC” 则 ${table_name} 是 ABC #{table_name} 是 “ABC" Java代码   1.#可以进行预编译,进行类型匹配,#变量名# 会转化为 jdbc 的 类型 $

ibatis中井号跟美元符号区别(#、$)

1.#可以进行预编译,进行类型匹配,#变量名# 会转化为 jdbc 的 类型 $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容 例如: select * from tablename where id = #id# ,假设id的值为12,其中如果数据库字段id为字符型,那么#id#表示的就是'12',如果id为整型,那么#id#就是 12 会转化为jdbc的 select * from tablename where id=?,把?参数设置为id的值 select *

URL中#(井号)的作用(转)

2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变成了 http://twitter.com/#!/username 在我印象中,这是主流网站第一次将"#"大规模用于直接与用户交互的关键URL中.这表明井号(Hash)的作用正在被重新认识.本文根据HttpWatch的文章,整理与井号有关的所有重要知识点. 一.#的涵义 #代表网页中的一个

Mybatis中输出映射resultType与resultMap的区别

(原文地址:http://blog.csdn.net/acmman/article/details/46509375) 1.resultType 使用resultType进行输出映射,只有查询出来的列名和pojo(实体bean)中的属性名一致,该列才可以映射成功. 如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象.只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象. 1.1输出pojo对象和pojo列表 不管是输出的pojo单个对象还是一个列表(list中

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

项目中,经常会在xml中看到这样的写法: <properties resource="properties/database.properties"/> <dataSource type="SIMPLE"> <property value="${driver}" name="JDBC.Driver"/> <property value="${url}" name=&

Mybatis中SQL动态语句灵活运用${}符号和#{}符号

问题举例:参数内不允许绑定参数. 解决方式:将#{ } 改为${ }即可,原来看过一篇文章,上面介绍了两者的区别,基本情况如下 之前看过一篇Ibatis的文章,介绍了2者区别,仔细一想Mybatis是升级版的Ibatis,对两则支持应该也没问题,试一下真的可行,记录备案!

java mybatis中大于号小于号的转义

大于号:  > 小于号:   <

C语言中 单引号与双引号的区别

在C语言中,字符用单引号,字符串用双引号.在c1='a';中,'a'是字符常量,必须用单引号."a"表示字符串,包含两个字符,一个是'a',一个是'\0'. 用数组来存储字符串. int main() { char ch[2] = "A"; } 简言之,单引号是一个字符,,双引号是字符串, 原文地址:https://www.cnblogs.com/654321cc/p/9266101.html

shell脚本中常见的一些特殊符号和作用详解

这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1.{} 大括号: 用法一:通配符扩展eg: ls my_{finger,toe}s这条命令相当于如下命令的组合:ls my_fingers my_toeseg: mkdir {userA,userB,userC}-{home,bin,data}我们将得到