记得之前讲jdbc时说用PreparedStament就可以处理

记得之前讲jdbc时说用PreparedStament就可以处理

记得之前将jdbc时说用PreparedStament就可以处理, mybatis底层不是用的PreparedStament

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。是的,同学很聪明,在这里MyBatis就是借用了PreparedStament。#{ } 相当于参数占位符。

select * from t_goods where title = #{title} 就相当于先发送了“select * from t_goods where title = ?”进行预编译。因为对SQL进行了预编译,而其后注入的参数将不会再进行SQL编译,所以可以用来防止SQL注入攻击。

如果解答了同学的疑问,望采纳~

祝学习愉快~

  • 慕才子 提问者 #1
    意思是${title} 这种的是用的Statement吗
    2019-11-23 14:06:47
  • 芝芝兰兰 回复 提问者 慕才子 #2
    是的。在运行时MyBatis是使用不同的StatementHandler来进行查询的,在使用SimpleStatementHandler的query方法时,是直接使用了Statement的execute来执行sql。祝学习愉快~
    2019-11-23 15:01:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师