mybatis中 和井号区别

admin 34 0

在MyBatis中,`#{}`和`${}`的区别主要体现在处理参数的方式上。

`#{}`是预编译处理,MyBatis会将SQL语句中的`#{}`替换为问号(?),即占位符,然后使用PreparedStatement的set方法来赋值,这种方式可以防止SQL注入攻击,并且对于字符串类型的参数,会自动添加单引号。

而`${}`则是直接替换,MyBatis会直接将SQL语句中的`${}`替换为参数的值,这种方式在处理数值类型的参数时没有问题,但如果参数的类型是字符串,且没有单引号,可能会导致程序报错。

在选择使用`#{}`还是`${}`时,需要根据参数的类型和安全性来决定,如果参数是字符串类型,且需要防止SQL注入攻击,建议使用`#{}`;如果参数是数值类型,且不需要担心SQL注入攻击,可以选择使用`${}`。