首页 > 其他分享 >面试题:Mybatis中的#{}和${}有什么区别?这是我见过最好的回答

面试题:Mybatis中的#{}和${}有什么区别?这是我见过最好的回答

时间:2023-09-12 19:47:35浏览次数:51  
标签:面试题 preparedStatement 区别 占位 mybatis SQL Mybatis

面试题Mybatis中的#{}和${}有什么区别?

前言

今天来分享一道比较好的面试题,“Mybatis中的#{}和${}有什么区别?”。

对于这个问题,我们一起看看考察点和比较好的回答吧!题,看看普通人

考察点

mybatis是现在企业级开发中经常使用的数据持久层框架,这个问题就是面试官想考察我们对#{},${}有没有深刻的认识,以及日常开发中是否善于积累,认真思考。

回答

下面我从3个点来回答:

1.共同点:#,$都是去实现动态SQL的一种方式,通过这种方式我们可以把参数传递到xml中,在执行前mybatis会对占位符进行动态解析。

2.#  等同于jdbc里面的 ?占位符,相当于向PreparedStatement(了解PreparedStateMent https://jenkov.com/tutorials/jdbc/preparedstatement.html)中设置属性值,而我们的PreparedStatement是预编译的,它规定了SQL语句的一个结构,并且在设置参数的时候,如果有特殊的字符会自动进行转义,所以#占位符可以防止SQL注入。

String sql = "update people set firstname=? , lastname=? where id=?";

PreparedStatement preparedStatement =connection.prepareStatement(sql);

preparedStatement.setString(1, "Gary");
preparedStatement.setString(2, "Larson");
preparedStatement.setLong  (3, 123);

int rowsAffected = preparedStatement.executeUpdate();

3.$ 的方式相当于直接把参数拼接到SQL中,Mybatis不会对它进行任何特殊的处理。所以不能够防止SQL注入。但是$占位符更多的是动态参数,#其实是用来做占位符的。$更适合动态传递表名,动态设置排序字段等。

以上就是我对于这个问题的理解。

总结

这个问题主要是考察求职者对mybatis中常见占位符的理解能力。在实际应用中,mybatis是最常用的功能,对于这部分内容如果理解不够深刻,很容易造成事务不生效的问题。希望读完这篇文章你有所收获。欢迎转发,关注微信公众号:程序员的故事,了解更多精彩面试题。

图片

精选推荐

1.面试题:过滤器和拦截器的区别?

2.如何知道线程池中的线程任务执行完成?

3.面试题:为什么 SQL 语句不要过多的 join?

4.有没有排查过线上OOM问题,怎么处理的?

5.cpu飚高反应慢怎么排查?

6.@Resource和@Autowired的区别?

7.面试题:请说一下对象的创建过程?

标签:面试题,preparedStatement,区别,占位,mybatis,SQL,Mybatis
From: https://www.cnblogs.com/zyxsblogs/p/17697627.html

相关文章

  • mybatis
    mybatismybatis是一款优秀的持久层框架MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java对象)为数据库中的记录。持久层Dao层,Service层,Cont......
  • 一图看懂iPhone 15系列:15/Plus/Pro/Pro Max有啥区别?详细配置对比
    距离iPhone15系列发布只剩下2天(北京时间9月13日凌晨1点),即将推出预计分别是iPhone15、iPhone15Plus,以及Pro系列的iPhone15Pro以及iPhone15ProMax。TrendForce集邦汇总了四款新机规格预测。硬件方面,受欧盟订定法案的限制,苹果也将于今年加入Type-C的行列,全新更换C口。iPho......
  • 敏捷项目管理与传统项目管理的区别?一目了然
    从事项目管理行业的人应该都知道,项目管理领域有两种管理方式:传统项目管理和敏捷项目管理。很多人在团队引入敏捷的时候,会有一个疑惑,传统项目管理和敏捷项目管理的区别分别是什么? 什么是瀑布式项目管理?瀑布式项目管理是一种传统的项目管理方式。在瀑布式项目管理中,项目的整体管理过......
  • 使用mybatis进行批量添加与批量删除
    2023-09-12 StoreHouseMapper/***批量添加*/voidinsertMoreSH(@Param("storeHouses")List<StoreHouse>storeHouses);/***批量删除方式一*/voiddeleteMoreSH(@Param("ids")Integer[]ids);/***......
  • 剑指offer面试题3:数组中重复的数字
    一、知识点:数组相关知识二、描述在一个长度为n的数组里的所有数字都在0~n-1范围内,数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道重复几次。请找出数组中任意一个重复的数字,例如:输入长度为7的数组[2,3,2,4,3,3,5],那么输出2或者3都是正确的,存在不合法的输入的话输出-1。......
  • [标准sql] 内连接和外连接的区别
    连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行。连接可分为以下几类:内连接(典型的连接运算,使用像=或<>之类的比较运算符)。包括相等连接和自然连接。内连接使用比较运算符根据每个表共有的......
  • cookie和session的区别,分布式环境怎么保存用户状态
    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用C......
  • cookie和session的区别,分布式环境怎么保存用户状态
    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOK......
  • 进口化妆品和国产化妆品备案有什么区别呢?
    账号申请上面是有区别的:除了共同需要的资料以外,如果注册和备案人是境外企业的话,那还需要提交以下资料:1,填写境内负责人信息表格;2,境内负责人公证书原件以及授权书原件;境外生产规范资料原件,如果你无法提供原件,那就要提供中国公证机关公证的或者是我国使(领)馆确认的复印件。备案资料差异......
  • setInterval和setTimeout的区别
    在制作网页动态效果时,一定会遇到某些需求,要求某段程序等待多时时间后再开始执行,就像在我们的生活中一样,待会儿再开始做一件事。在JavaScript中主要通过定时器实现此类需求,本文将对定时器做一个概括,正对setTimeout()做一个详细用法总结。一.setInterval与setTimeout的区别setInterva......