当前位置:首页 > 编程笔记 > 正文
已解决

MyBatis面试题(四)

来自网友在路上 172872提问 提问时间:2023-09-19 20:26:22阅读次数: 72

最佳答案 问答题库728位专家为你答疑解惑

文章目录

  • 前言
  • 一、Mybatis 是否可以映射 Enum 枚举类?
  • 二、如何获取自动生成的(主)键值?
  • 三、在 mapper 中如何传递多个参数?
  • 四、resultType resultMap 的区别?
  • 五、使用 MyBatis 的 mapper 接口调用时有哪些要求?
  • 六、Mybatis 比 IBatis 比较大的几个改进是什么?
  • 七、IBatis 和 MyBatis 在核心处理类分别叫什么?
  • 八、IBatis 和 MyBatis 在细节上的不同有哪些?
  • 总结


前言

  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 在细节上的不同有哪些?
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"MyBatis面试题(四)":http://eshow365.cn/6-9544-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!