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,命名空间可以和类路径不一样吗?
可以。