网站优化具体是怎么做的,上海企业网络推广公司,凡科做的网站打不开,网站建设公司的市场营销方案2023.10.31
#{}#xff1a;先编译sql语句#xff0c;再给占位符传值#xff0c;底层是PreparedStatement实现。可以防止sql注入#xff0c;比较常用。
${}#xff1a;先进行sql语句拼接#xff0c;然后再编译sql语句#xff0c;底层是Statement实现。存在sql注入现象。…2023.10.31
#{}先编译sql语句再给占位符传值底层是PreparedStatement实现。可以防止sql注入比较常用。
${}先进行sql语句拼接然后再编译sql语句底层是Statement实现。存在sql注入现象。只有在需要进行sql语句关键字拼接的情况下才会用到。
考虑一个使用${}的场景 假如需要使用mybatis实现批量删除的功能有两种sql语句可以实现
delete from t_user where id 1 or id 2 or id 3;delete from t_user where id in(1, 2, 3);
这里假设使用第二种用in的方式。
此时接口的实现类会传来一个参数ids代表他想批量删除的一些id假设传过来的ids为1, 2, 3。此时我们在xml配置文件中写sql语句的时候如果使用#{}
delete iddeleteBatchdelete from t_car where id in(#{ids})
/delete
那么底层会被编译成
delete from t_user where id in(1,2,3)显然不能完成需求。
如果使用${}:
delete iddeleteBatchdelete from t_car where id in(${ids})
/delete
底层会被翻译为
delete from t_user where id in(1, 2, 3)如此便可以完成需求了。