#{}:是以预编译的映射,将参数设置到sql语句中,和jdbc的preraredStatement一样,使用占位符,防止sql注入. ${}:取出的值会直接拼装在sql中,会有安全问题. 大多数情况下的参数取值,我们都要用#{}的方式取值. 但是原生jdbc不支持占位符的地方,例如:分表,排序等等...我们可以使用${} 分表:比如按照年份的分表查询员工绩效等等如下: select * from ${year}_table a where 1=1 order by a.age ${desc}
#{}:可以获取map中的值或者pojo对象属性的值.${}:可以获取map中的值或者pojo对象属性的值. 区别: #{}:是以预编译的形式,将参数设置到sql语句中:PreparedStatement:防止sql注入 ${}:取出的值直接拼装在sql语句中:会有安全问题: 大多情况下,我们去参数的值都应该去使用#{}: select * from tbl_employee where id=${id} and last_name=#{lastName}Preparing: select *