MyBatis经典面试题的整理

简介: 在代码中编写for语句和xml中写foreach有什么区别?

在代码中编写for语句和xml中写foreach有什么区别?

  • 在代码中编写for循环语句,编写相对简单,而且容易理解,但是他有一个很大的缺点那就是for语句每一循环都会创建一次连接,对数据库的消耗相当的大,如果使用foreach他会将所有的sql值拼接成为一条SQL语句。
  • foreach也有一些问题,比如批量操作的时候,它对传入的数据包的大小是有限制的,默认大小值为4M,如果操作4M则会出现报错。(解决方案:定义一个批量执行器Batch Executor)

resultMap和resultType的区别?

Statement和PreparedStatement的区别?

什么时候会出现关联查询?

MyBatis关联查询的方式有哪些?

  • 嵌套结果
<!-- 根据文章查询作者,一对一查询的结果,嵌套结果 -->
<resultMap id="BlogWithAuthorResultMap" type="com.gupaoedu.domain.associate.BlogAndAuthor">
    <id column="bid" property="bid" jdbcType="INTEGER"/>
    <result column="name" property="name" jdbcType="VARCHAR"/>
    <!-- 联合查询,将author的属性映射到ResultMap -->
    <association property="author" javaType="com.gupaoedu.domain.Author">
        <id column="author_id" property="authorId"/>
        <result column="author_name" property="authorName"/>
    </association>
</resultMap>
  • 嵌套查询
<!-- 另一种联合查询(一对一)的实现,但是这种方式有“N+1”的问题 -->
<resultMap id="BlogWithAuthorQueryMap" type="com.gupaoedu.domain.associate.BlogAndAuthor">
    <id column="bid" property="bid" jdbcType="INTEGER"/>
    <result column="name" property="name" jdbcType="VARCHAR"/>
    <association property="author" javaType="com.gupaoedu.domain.Author"
                 column="author_id" select="selectAuthor"/> <!-- selectAuthor 定义在下面-->
</resultMap>
<!-- 嵌套查询 -->
<select id="selectAuthor" parameterType="int" resultType="com.gupaoedu.domain.Author">
    select author_id authorId, author_name authorName
    from author where author_id = #{authorId}
</select>

逻辑翻页和物理翻页?

MyBatis如果新增了字段,我们原来的Mapper.xml文件不想改动怎么办?

  • 集成Mapper文件
  • 编写通用Mapper
  • 通用Mapper对应的框架 Tk MyBatis和MyBatis plus

association和collection的区别?

一级缓存的作用域 session级别,会话级别。一个会话内能够共享,如果多个会话不能共享
二级缓存的作用域 namespace级别,相当于同一个接口内,共享数据

二级缓存是在一级缓存之前还是之后工作?
先二级然后在一级缓存

一级缓存和二级缓存的关系?

目录
相关文章
|
1月前
|
缓存 Java 数据库连接
Mybatis缓存相关面试题有多卷
使用 MyBatis 缓存机制需要注意以下几点: 对于频繁更新和变动的数据,不适合使用缓存。 对于数据的一致性要求比较高的场景,不适合使用缓存。 如果配置了二级缓存,需要确保缓存的数据不会影响到其他业务模块的数据。 在使用缓存时,需要注意缓存的命中率和缓存的过期策略,避免缓存过期导致查询性能下降。
53 0
|
1月前
|
Java 关系型数据库 数据库连接
BATJ高频面试249道题:微服务+多线程+分布式+MyBatis +Spring
本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。
|
1月前
|
SQL 缓存 Java
Mybatis面试题
Mybatis面试题
|
2天前
|
SQL 缓存 Java
MyBatis最经典的20道面试题,你都会了吗?
MyBatis最经典的20道面试题,你都会了吗?
7 0
|
1月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
1月前
|
SQL Java 数据库连接
MyBatis常见面试题总结2
MyBatis常见面试题总结
32 0
|
1月前
|
SQL Java 数据库连接
MyBatis常见面试题总结1
MyBatis常见面试题总结
34 0
|
1月前
|
SQL Java 数据库连接
答案很详细的MyBatis面试题(含示例代码)
MyBatis是一种优秀的持久层框架,它是一个轻量级的、优化的、功能强大的Java持久层框架,它的设计理念是贴近SQL、便于使用、高效并且功能丰富。通过MyBatis的使用,开发者能够更加专注于业务逻辑的实现,而不用过多关注底层的数据库操作。MyBatis通过XML或注解的方式配置SQL映射文件,并将Java的POJO(Plain Old Java Object,普通的Java对象)与数据库中的记录进行映射,使得开发人员能够以面向对象的方式来操作数据库,同时兼顾了SQL的灵活性和效率。灵活的SQL映射。
153 0
|
1月前
|
SQL Java 数据库连接
MyBatis常见面试题和答案(2020最新版)
MyBatis常见面试题和答案(2020最新版)
199 0
|
1月前
|
SQL 缓存 Java
程序员的30大Mybatis面试问题及答案
程序员的30大Mybatis面试问题及答案