mybatis面试热点

database

分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。

Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

 <resultMap>、<parameterMap>、<sql>、<include>、<selectKey> ,加上动态sql的9个标签,其中 <sql> 为sql片段标签,通过 <include> 标签引入sql片段, <selectKey> 为不支持自增的主键生成策略标签。

为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。

Mybatis 中一级缓存与二级缓存的区别?

缓存:合理使用缓存是优化中最常见的方法之一,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。

  • 一级缓存是SqlSession级别的缓存:

Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存。一级缓存在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。

  • 二级缓存是mapper级别的缓存:

MyBatis的二级缓存是mapper级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

 

开启二级缓存:
A.mybatis.xml配置文件中加入:

<span style="font-size:18px;"><settings>    

<!--开启二级缓存-->

<setting name="cacheEnabled" value="true"/>

</settings> </span>

B.在需要开启二级缓存的mapper.xml中加入caceh标签

<span style="font-size:18px;"><cache/></span>  

C.让使用二级缓存的POJO类实现Serializable接口

<span style="font-size:18px;">public class User implements Serializable {}</span>  

使用 MyBatis 的 mapper 接口调用时有哪些要求?

A. Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同


B. Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同


C. Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同


D. Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径

简述一下Mybatis 的编程步骤

A.创建 SqlSessionFactory


B.通过 SqlSessionFactory 创建 SqlSession


C.通过 sqlsession 执行数据库操作


D.调用 session.commit()提交事务


E.调用 session.close()关闭会话

MyBatis中接口绑定有几种实现方式,是怎么实现的?

A.通过注解绑定,在接口的方法上面加上

@Select@Update等注解里面包含Sql语句来绑定(Sql语句比较简单的时候,推荐注解绑定)


B.通过xml里面写SQL来绑定, 指定xml映射文件里面的namespace必须为接口的全路径名(SQL语句比较复杂的时候,推荐xml绑定)

MyBatis实现一对多有几种方式,怎么操作的?

A.联合查询:几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对多的类就可以完成.


B.嵌套查询:是先查一个表,根据这个表里面的结果的外键id去另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。

 

 

以上是 mybatis面试热点 的全部内容, 来源链接: utcz.com/z/532251.html

回到顶部