MyBatis面试题(四)

本文详细介绍了Mybatis对Enum枚举类的映射,自动生成主键的方法,mapper中参数传递、resultType和resultMap的区别,以及Mybatis与IBatis在接口调用、核心处理类和细节上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

  1. Mybatis 是否可以映射 Enum 枚举类?
  2. 如何获取自动生成的(主)键值?
  3. 在 mapper 中如何传递多个参数?
  4. resultType resultMap 的区别?
  5. 使用 MyBatis 的 mapper 接口调用时有哪些要求?
  6. Mybatis 比 IBatis 比较大的几个改进是什么?
  7. IBatis 和 MyBatis 在核心处理类分别叫什么?
  8. IBatis 和 MyBatis 在细节上的不同有哪些?

一、Mybatis 是否可以映射 Enum 枚举类?

答:Mybatis 可以映射枚举类,不单可以映射枚举类,Mybatis 可以映射任何对象到表的一列上。映射方式为自定义一个 TypeHandler,实现 TypeHandler 的 setParameter()和getResult()接口方法。
TypeHandler 有两个作用,一是完成从 javaType 至 jdbcType 的转换,二是完成 jdbcType 至 javaType 的转换,体现为 setParameter()和 getResult()两个方法,分别代表设置 sql 问号占位符参数和获取列查询结果。


二、如何获取自动生成的(主)键值?

答:配置文件设置 usegeneratedkeys 为 true


三、在 mapper 中如何传递多个参数?

答:

  1. 直接在方法中传递参数,xml 文件用#{0} #{1}来获取
  2. 使用 @param 注解:这样可以直接在 xml 文件中通过#{name}来获取

四、resultType resultMap 的区别?

答:

  1. 类的名字和数据库相同时,可以直接设置 resultType 参数为 Pojo 类
  2. 若不同,需要设置 resultMap 将结果名字和 Pojo 名字进行转换

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

答:

  1. Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同
  2. Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同
  3. Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同
  4. Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。

六、Mybatis 比 IBatis 比较大的几个改进是什么?

答:

  1. 有接口绑定,包括注解绑定 sql 和 xml 绑定 Sql
  2. 动态 sql 由原来的节点配置变成 OGNL 表达式 3) 在一对一,一对多的时候引进了
    association,在一对多的时候引入了 collection 节点,不过都是在 resultMap 里面配置

七、IBatis 和 MyBatis 在核心处理类分别叫什么?

答:IBatis 里面的核心处理类交 SqlMapClient,MyBatis 里面的核心处理类叫做 SqlSession。


八、IBatis 和 MyBatis 在细节上的不同有哪些?

答:

  1. 在 sql 里面变量命名有原来的#变量# 变成了#{变量}
  2. 原来的 变量 变量 变量变成了${变量}
  3. 原来在 sql 节点里面的 class 都换名字交 type
  4. 原来的 queryForObject queryForList 变成了 selectOne selectList5)原来的别名设置在映射文件里面放在了核心配置文件里

总结

  1. Mybatis 是否可以映射 Enum 枚举类?
  2. 如何获取自动生成的(主)键值?
  3. 在 mapper 中如何传递多个参数?
  4. resultType resultMap 的区别?
  5. 使用 MyBatis 的 mapper 接口调用时有哪些要求?
  6. Mybatis 比 IBatis 比较大的几个改进是什么?
  7. IBatis 和 MyBatis 在核心处理类分别叫什么?
  8. IBatis 和 MyBatis 在细节上的不同有哪些?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序打工仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值