mybatis中的#{}和${}的区别

简介: mybatis中的#{}和${}的区别

一、#{}和${}的区别

  #{}占位符  SQL预编译  动态拼接-》预编译-》执行  变量替换是在DBMS中  对应的变量自动加上单引号  能防止SQl注入      

  ${}拼接符  SQL拼接      动态拼接-》编译-》执行     变量替换是在DBMS外  对应的变量不会加上单引号  不能防止SQL注入

1、单个参数

(1)#无mybatis默认值,可任意且与参数名无关

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

(2)使mybatisvalue使用mybatis默认值value,即{value}

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

(3)$使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

2、多个参数的情况

(1)#使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 … 

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

(2)#使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

(3)$使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 …

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

(4)$使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param("")

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

注:@Param("") 是 @Param(value="") 的简写

3、#{} 和 ${} 在使用中的技巧和建议

 

(1)不论是单个参数,还是多个参数,一律都建议使用注解@Param("")

 

(2)能用 #{} 的地方就用 #{},不用或少用 ${}

 

(3)表名作参数时,必须用 selectfrom。如:select∗from{tableName}

 

(4)order by 时,必须用 selectfromtuserorderby。如:select∗fromtuserorderby{columnName}

 

(5)使用 时,要注意何时加或不加单引号,即{} 和 '${}'






目录
相关文章
|
7月前
|
SQL Java 数据库连接
hibernate和mybatis的区别
hibernate和mybatis的区别
|
1月前
|
SQL 安全 Java
MyBatis(6)#{}和${}的区别
在MyBatis中,`#{}`和`${}`是用于在SQL语句中嵌入参数的两种方式。`#{}`用于预处理参数,可以防止SQL注入;而`${}`进行直接字符串替换,适用于动态插入表名或列名,但存在SQL注入风险。建议优先使用`#{}`,并在必要时谨慎使用`${}`。
|
3月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
4月前
|
SQL Java 数据库连接
MyBatis 和 Hibernate 有什么区别?
【8月更文挑战第21天】
70 0
|
4月前
|
SQL Java 数据库连接
在mybatis中#{}和${}的区别
在MyBatis中,使用#{}可以防止SQL注入,它通过预处理语句来安全地设置参数值,而${}会将传入的数据直接插入SQL语句中,不安全,通常用于传入数据库对象或在确保数据安全的情况下使用。
|
6月前
|
SQL XML Java
蓝易云 - ibatis与mybatis的区别
总的来说,MyBatis在功能性和易用性上都优于iBatis,是iBatis的改进版。
48 2
|
7月前
|
SQL Java 数据库连接
MyBatis与Hibernate区别
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
|
6月前
|
SQL Java 数据库连接
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
66 0
|
7月前
|
SQL 缓存 Java
|
SQL Java 数据库连接
MyBatis之动态SQL、#与$的区别和结果映射
MyBatis之动态SQL、#与$的区别和结果映射
123 0