> 文章列表 > mybatis面试题(阅读源代码后原创)

mybatis面试题(阅读源代码后原创)

mybatis面试题(阅读源代码后原创)

1.别名的写法:

<typeAliases><typeAlias alias="Author" type="cn.hm.pojo.Author"/></typeAliases>
<typeAliases><package name="cn.hm.pojo"/>
</typeAliases>

如果是package形式命名别名不谢@Alias可以吗? 可以,此时的key就是不带全路径的类名

2.常用的settings有哪些?

缓存,日志,驼峰

3.如果settings乱写会怎样,

报错,settings的属性在这个类里面体现了,如果乱写,检测不到set方法反射报错了。

org.apache.ibatis.session.Configuration

4.一级缓存为什么默认是开启的,二级缓存默认是关闭的?

 org.apache.ibatis.builder.xml.XMLConfigBuilder#settingsElement

由于setting里面没有配置cacheEnable的属性,这里默认为true,所以默认开启,

二级缓存:从图中可以看出,如果没有配置就get不到

org.apache.ibatis.executor.CachingExecutor#query(org.apache.ibatis.mapping.MappedStatement, java.lang.Object, org.apache.ibatis.session.RowBounds, org.apache.ibatis.session.ResultHandler, org.apache.ibatis.cache.CacheKey, org.apache.ibatis.mapping.BoundSql)

 

5.解析数据库环境配置后,得到什么产物?

从图中可以看到,能得到一个事物工厂和一个数据源,最后构建成一个environment。 

org.apache.ibatis.builder.xml.XMLConfigBuilder#environmentsElement

6.红箭头指向的值能乱写吗?如果不能,那有哪些值?

不能乱写,只能是JDBC,MANAGED。 

 7.有几种方式定义mapper

4中,优先级如下:package  resource url class

8.定义mapper的时候可以只写xml不写class吗?

可以:

 这种方式定义mapper,命名空间可以和类路径不一样吗?

可以。

常见知识分享