mybatis面试热点
分页插件的基本原理是使用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