Mybatis_给SQL语句传参的两种方式
给 SQL 语句传参的两种方式
1、#{}方式
Mybatis 会在运行过程中,把配置文件中的 SQL 语句里面的#{}转换为“?”占位符,发送给数据库执行。
配置文件中的 SQL:
1 | <delete id="deleteEmployeeById"> |
实际执行的 SQL:
1 | delete from t_emp where emp_id=? |
2、${}方式
将来会根据${}拼字符串
①SQL 语句
1 | <select id="selectEmployeeByName" resultType="com.atguigu.mybatis.entity.Employee"> |
②Mapper 接口
注意:Mapper 接口中不能出现重名的方法,哪怕是重载的方法也不行!
1 | public interface EmployeeMapper { |
③junit 测试
1 |
|
④ 实际打印的 SQL
1 | select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_name like '%r%' |
⑤ 应用场景举例
在 SQL 语句中,数据库表的表名不确定,需要外部动态传入,此时不能使用#{},因为数据库不允许表名位置使用问号占位符,此时只能使用${}。
其他情况,只要能用#{}肯定不用${},避免 SQL 注入。
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论