Mybatis SQL映射文件参数#于$取值区别

文章目录

#{} 是以预编译的形式,将参数设置到sql语句中,可以防止sql注入。相当于PreparedStatement

${} 取出的值直接拼接在sql语句中,会有注入问题。

大多数情况还是使用#{},${}一般是在分表查询时使用,排序,拼接字段等信息时使用:

select * from ${year}_salary where xxx;
select * from tbl_employee order by ${f_name} ${order}

#{}更丰富的用法

规定参数的一些规则
JavaType、JdbcType、mode(存储过程)、numericScale、resultMap、typeHandler、jdbcTypeName、expression(未来准备支持的功能)

JdbcType通常需要在某种特定的条件下被设置。

在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理。比如Oracle(报错)。

原文链接:,转发请注明来源!

发表评论