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