最近正在准备面试,网上查了许多的面试题,但是却都很少有相关答案。因此特意在这里整理一份题型以及我自己填充的部分答案,如果有错误,或者部分我不知道结果的题目,可以请大家私信或评论我调整。同时本内容也会不定期进行更新,为了方便检索,会在前面先写问题和问题序号,下面会再写答案。其他相关内容spring、redis、数据库等稍后会一一进行编写。
侵删。
青藤门下走狗:Java常见面试题整理(带答案)——基础篇zhuanlan.zhihu.com
青藤门下走狗:Java常见面试题整理(带答案)——多线程zhuanlan.zhihu.com
青藤门下走狗:Java常见面试题整理(带答案)——springzhuanlan.zhihu.com
Mybatis问题- 什么是Mybatis
- Mybatis优缺点
- Mybatis适用场景
- Mybatis与Hibernate区别
- #{}和${}区别
- 模糊查询
- dao接口的工作原理
- 如何给sql传递多个参数
- 动态sql标签有哪些
- xml中常见标签
- 一对一,一对多的关联查询
1.什么是Mybatis
Mybatis是一个半ORM框架,内部封装了JDBC,开发时只需关注SQL语句本身。程序员直接编写原生态SQL,严格控制SQL执行性能,灵活性高。
2.Mybatis优缺点
优点:
(1)可以编写原生SQL,严格控制SQL执行性能,灵活性高。
(2)SQL语句解除与代码的耦合,便于统一管理。
(3)可编写动态SQL,可以重复引用同一段SQL
(4)内部使用JDBC连接数据库,理论上只要是JDBC支持的数据库,Mybatis都支持。
(5)减少了JDBC繁琐的程序代码,全部交由内部封装。
(6)提供标签映射,支持对象与数据库表的字段映射。
缺点:
(1)SQL语句编写量大,对开发人员SQL功底有一定要求
(2)由于使用原生态SQL,因此与数据库绑定,如果切换数据库,可能存在问题。
3.Mybatis适用场景
Mybatis特点在于原生SQL,因此可以用在对性能要求比较高的地方。比如互联网行业。
4.Mybatis与Hibernate区别
(1)Hibernate是一个完全的ORM框架,对象与数据库表的映射一一对应,通过对象来操作数据库表的数据。减少了许多的SQL语句编写。
(2)Mybatis是一个半ORM框架,支持对象与数据库表的映射(但不如Hibernate那样全面与功能强大),同时也支持原生态SQL的编写,可以严格控制SQL性能。
5.#{}和${}区别
#{}:预编译处理,会将参数部分转换为"?",再通过PreparedStatement的set方法来赋值。
${}:字符串替换,只会将传入的参数替换${}位置。可能会存在SQL注入问题。
6.模糊查询
参数拼接:在参数传入前,通过Java代码为其添加'%'。如String str = param + "%";
SQL拼接:在SQL语句中,拼接字符串后再执行like。如where name like 'yang' || '%'
标签拼接:在xml标签中为参数添加'%',再将标签ID传入SQL语句中。
7.dao接口如何与xml数据配置。
每一个xml文件的<mapper>标签中都有一个namespace属性,这里配置接口的全限定名。通过这个属性可以找到xml文件对应的接口类是哪一个。然后再通过<select>、<update>、<insert>、<delete>这四种标签的ID属性,找到对应的接口方法(由于xml文件是通过id与接口方法来匹配确定sql语句对应的方法。因此在Mybatis的配置接口中,不能存在方法重载)。
实际上上面的四种标签里的sql会被解析为一个MapperStatement对象。Myabtis通过JDK的动态代理技术对接口方法进行代理,如果程序调用相关的接口方法,会转为执行对应MapperStatement中的SQL语句,并返回执行结果。
8.如何给sql传递多个参数
传入一个对象:在sql中可以指定对象的属性来进行配置。
传入多个方法参数:通过@param注解来配置每一个参数的别名,也可以指定参数下标。
9.动态sql标签有哪些
<where>、<set>、<foreach>、<if>、<choose>、<when>、<otherwise>、<bind>、<trim>
10.xml中常见标签
<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>等。
11.一对一,一对多的关联查询
太晚了,明天补充完整。
https://blog.csdn.net/a745233700/article/details/80977133