# Mybatis 技巧集锦 ## MyBatis 中使用 `#{}` 代替 `${}` 占位符传递参数 在Mapper层使@Select注解进行SQL语句查询时,往往需要进行参数传入和拼接,一般情况下使用两种占位符 `#{}` 和 `${}` 。 两者的区别为: - `#{}` 是预编译处理,后台输出的日志会将SQL语句中的#{}占位符输出为?,将传入的Parameter传入SQL语句。 - `#{}`传入参数后,会自动给参数加上' '(引号) - `${}` 是字符串硬替换,会直接将传入的参数直接替换${}占位符,不进行预处理。有SQL注入的风险。 - `${}`传入的参数会硬替换字符串,不会有其他处理 一般来说,更推荐使用 `#{}` 。 ## MyBatis 中使用标签来动态生成 SQL mybatis 提供了 ``、``、``、``、`` 等标签,用于动态生成 SQL。