在使用mybatis的时候我们会使用到 # { } 和 $ { } 这两个符号来为sql语句传参数
而这两个 符号有什么区别呢?
#{ } :是预编译处理,是占位符
${ }:是字符串替换,是拼接符
我们通过打印日志进行观察:
使用#{}的情况:
使用${}的情况:
在这里我们可以观察到 使用#{}的时候是先使用? 进行占位,然后调用PreparedStatement来赋值。
而使用${}的时候是直接进行替换操作
因此我们得出经验的结论
当传值是Integer的时候,都可以使用
当传值为 String类型,只能使用#{ } ,因为直接替换的不会给加上 " ",而导致sql语句错误
当传值含有mysql的关键字,只能使用 ${ } ,因为另一种会误认为是字符串
// 1.传值是Integer的时候,都可以使用
// 2.传值为 String类型,只能使用#{ }
// 3.当传值为关键字,只能使用 ${ }
下一篇:学习java——④多态