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

文章详细介绍了MyBatis中的类型别名设置,包括单个类型别名和包扫描,以及settings常用配置如缓存和日志。还讨论了一级缓存和二级缓存的默认状态,并解释了环境配置解析后的产物。此外,文章提到了Mapper的四种定义方式,确认了可以仅使用XML而不写Java类,并强调了Mapper定义中命名空间与类路径的一致性要求。
摘要由CSDN通过智能技术生成

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

可以。

9.如果用如下方式定义mapper,命名空间和类路径可以不一样吗?

如下三个可以不一样吗?一定要一样,底层是通过类路径将,换成/,然后到classpath下面去寻找对应的.xml解析,同时会把类路径放在当前的命名空间,如果xml里面配置的命名空间和类路径不一样,则直接报错。

<package name="com.hm.mapper"/>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值