MyBatis 使用笔记
1、typeAliases 配置细节
1)使用配置项 [ <package name="domain.blog"/> ] 时,会自动注册设定的包及其子包下的所有类
2)在Mapper文件中使用别名时,mybatis对别名的查找不区分大小写
2、对于返回结果为集合类查询,resultType为集合元素的类型,而非集合的类型
3、MyBatis的缓存分为:一级缓存(local cache) 及 二级缓存(global cache), 缓存的相关细节可以打印日志的方式进行验证,简要说明:
1)一级缓存为SqlSession级;二级缓存为全局,但命名空间相互独立
2)一级缓存默认开启;二级缓存默认不生效,需在Mapper文件中添加<cache />子项,缓存的元素需可序列化,具体说明可参考 mybatis 缓存(cache)的使用
3)搜索的顺序为先二级缓存,后一级缓存,框架图如下:
4、mybatis在select一张表时,如果无查询结果,则:
1)查询结果为对象时,返回结果为null
2)查询结果为List时,返回结果为size=0的空集合
5、mybatis默认启用local cache,对于相同输入的查询进行缓存,从而提高效率,因此,
1)同一session的相同查询不会影响效率,可以充分利用这一点优化代码结构
2)不要修改mybatis的返回结果,以免影响缓存值,详细说明见:MyBatis > Java API > Local Cache
3)与spring一起使用时,须开启spring事务,local cache才能生效,详细可参考spring结合mybatis时一级缓存失效问题
6、如何指定mybatis mapper bean name? 方法是使用 org.springframework.stereotype.Component 或 javax.inject.Named 注解