文章目录
前言
- Mybatis 是否可以映射 Enum 枚举类?
- 如何获取自动生成的(主)键值?
- 在 mapper 中如何传递多个参数?
- resultType resultMap 的区别?
- 使用 MyBatis 的 mapper 接口调用时有哪些要求?
- Mybatis 比 IBatis 比较大的几个改进是什么?
- IBatis 和 MyBatis 在核心处理类分别叫什么?
- IBatis 和 MyBatis 在细节上的不同有哪些?
一、Mybatis 是否可以映射 Enum 枚举类?
答:Mybatis 可以映射枚举类,不单可以映射枚举类,Mybatis 可以映射任何对象到表的一列上。映射方式为自定义一个 TypeHandler,实现 TypeHandler 的 setParameter()和getResult()接口方法。
TypeHandler 有两个作用,一是完成从 javaType 至 jdbcType 的转换,二是完成 jdbcType 至 javaType 的转换,体现为 setParameter()和 getResult()两个方法,分别代表设置 sql 问号占位符参数和获取列查询结果。
二、如何获取自动生成的(主)键值?
答:配置文件设置 usegeneratedkeys 为 true
三、在 mapper 中如何传递多个参数?
答:
- 直接在方法中传递参数,xml 文件用#{0} #{1}来获取
- 使用 @param 注解:这样可以直接在 xml 文件中通过#{name}来获取
四、resultType resultMap 的区别?
答:
- 类的名字和数据库相同时,可以直接设置 resultType 参数为 Pojo 类
- 若不同,需要设置 resultMap 将结果名字和 Pojo 名字进行转换
五、使用 MyBatis 的 mapper 接口调用时有哪些要求?
答:
- Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同
- Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同
- Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同
- Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。
六、Mybatis 比 IBatis 比较大的几个改进是什么?
答:
- 有接口绑定,包括注解绑定 sql 和 xml 绑定 Sql
- 动态 sql 由原来的节点配置变成 OGNL 表达式 3) 在一对一,一对多的时候引进了
association,在一对多的时候引入了 collection 节点,不过都是在 resultMap 里面配置
七、IBatis 和 MyBatis 在核心处理类分别叫什么?
答:IBatis 里面的核心处理类交 SqlMapClient,MyBatis 里面的核心处理类叫做 SqlSession。
八、IBatis 和 MyBatis 在细节上的不同有哪些?
答:
- 在 sql 里面变量命名有原来的#变量# 变成了#{变量}
- 原来的 变量 变量 变量变成了${变量}
- 原来在 sql 节点里面的 class 都换名字交 type
- 原来的 queryForObject queryForList 变成了 selectOne selectList5)原来的别名设置在映射文件里面放在了核心配置文件里
总结
- Mybatis 是否可以映射 Enum 枚举类?
- 如何获取自动生成的(主)键值?
- 在 mapper 中如何传递多个参数?
- resultType resultMap 的区别?
- 使用 MyBatis 的 mapper 接口调用时有哪些要求?
- Mybatis 比 IBatis 比较大的几个改进是什么?
- IBatis 和 MyBatis 在核心处理类分别叫什么?
- IBatis 和 MyBatis 在细节上的不同有哪些?