首页 > 其他 > 详细

谈面试中被提问的面试问题(一)

时间:2019-07-11 16:34:10      阅读:129      评论:0      收藏:0      [点我收藏+]

找工作时,被问及专业相关问题,当然基本上也是基础类问题,被问到了还是要记录下来

1、mysql中 # 和 $ 有何区别?(在项目开发中用 #{} 比较多,为什么呢)

  • #{} 表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

例如:

select * from table where name=#{name}

针对这个简单的查询语句,若传入的值为 张三,则解析成的sql就是这样的:

select * from table where name="张三"
  •  #{} 可以有效的防止sql注入
  • ${} 表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换

如上面的查询语句,用 name=${name},那么sql在解析的时候值为name=name,执行时就会报错

  • ${} 方式无法防止sql注入,如验证用户名时通过 name=${abc or 1=1} 就可以实现sql注入的目的
  • ${} 一般用于传入数据库对象,比如数据库表名

延伸:mybatis排序时,使用order by动态参数时需要注意,使用${} 而不用 #{}

2、spring和springBuffer及springBuilder区别?

 

谈面试中被提问的面试问题(一)

原文:https://www.cnblogs.com/xslzwm/p/11170821.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!