职场面试题总结(24)---Mybatis 都有哪些Executor执行器、resultType与resultMap的区别、IBatis和MyBatis的区别

48 阅读2分钟

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

Mybatis 有三种基本的Executor 执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。 1)SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。

2)ReuseExecutor:执行update或select,以sql作为key 查找 Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map。

3)BatchExecutor:完成批处理。

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

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

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

配置文件设置usegeneratedkeys为true。

4、resultType与resultMap的区别

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

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

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

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

IBatis 在核心处理类叫做SqlMapClient,MyBatis 在核心处理类叫做SqlSession。

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

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

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

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

4)原来的queryForObject queryForList 变成了selectOne、selectList。

5)原来的别名设置在映射文件里面放在了核心配置文件里。