MyBatis面试专题及答案【四】

本文详细介绍了Mybatis中的批处理执行器BatchExecutor,以及SimpleExecutor和ReuseExecutor的区别。还讨论了如何在Mybatis中指定Executor类型、执行批量插入并获取主键列表、映射枚举类以及处理多个参数的方法。此外,解释了resultType和resultMap的区别,并概述了Mybatis相对于IBatis的改进,包括接口绑定和动态SQL支持。
摘要由CSDN通过智能技术生成

25、Mybatis 中如何执行批处理?

答:使用 BatchExecutor 完成批处理。

26、Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?

答:Mybatis 有三种基本的 Executor 执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。

1)SimpleExecutor:每执行一次 update 或 select,就开启一个 Statement 对象,用完立刻关闭 Statement 对象。2)ReuseExecutor:执行 update 或 select,以 sql 作为key 查找 Statement 对象,存在就使用,不存在就创建,用完后,不关闭 Statement 对象,而是放置于 Map3)BatchExecutor:完成批处理。

27、Mybatis 中如何指定使用哪一种 Executor 执行器?

答:在 Mybatis 配置文件中,可以指定默认的 ExecutorType 执行器类型,也可以手动给DefaultSqlSessionFactory 的创建 SqlSession 的方法传递 ExecutorType 类型参数。

28、Mybatis 执行批量插入,能返回数据库主键列表吗?

答:能,JDBC 都能,Mybatis 当然也能。

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

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

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

答:配置文件设置 usegeneratedkeys 为 true

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

答:

1)直接在方法中传递参数,xml 文件用#{0} #{1}来获取

2)使用 @param 注解:这样可以直接在 xml 文件中通过#{name}来获取

32、resultType resultMap 的区别?

答:

1)类的名字和数据库相同时,可以直接设置 resultType 参数为 Pojo 类

2)若不同,需要设置 resultMap 将结果名字和 Pojo 名字进行转换

33、使用 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 接口的类路径。

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

答:

1)有接口绑定,包括注解绑定 sql 和 xml 绑定 Sql

2)动态 sql 由原来的节点配置变成 OGNL 表达式

3)在一对一,一对多的时候引进了association,在一对多的时候引入了 collection 节点,不过都是在 resultMap 里面配置

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

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

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

答:

1)在 sql 里面变量命名有原来的#变量# 变成了#{变量}

2)原来的$变量$变成了${变量}

3)原来在 sql 节点里面的 class 都换名字交 type

4)原来的 queryForObject queryForList 变成了 selectOne selectList5)原来的别名设置在映射文件里面放在了核心配置文件里

想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇! 给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值