1、 区分 #{} 和 ${}的不同应用场景
1)#{} 会生成预编译SQL,会正确的处理数据的类型,而${}仅仅是文本替换。 对于SQL: select * from student where xCode = ‘S123456’; 如果使用#{} 那么生成的SQL为: select * from student where xCode = ? 传的值为’S123456’; 如果使用${} 那么生成的SQL为:select * from student where xCode = S123456 如果xCode的数据类型为varchar,那么使用${}就会报错。 2)${}一般用在order by, limit, group by等场所。 假设我们使用#{} 来指定order by字段,比如 select * from student order by #{xCode}, 那么产生的SQL为 select * from student order by ?, 替换值后为 select * from student order by ‘xCode’ Mybatis对xCode加了引号导致排序失败