mybatis的Configuration详解

 更新时间:2020年11月03日 15:10:33   作者:IT乐知  
这篇文章主要介绍了mybatis的Configuration详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

上一篇介绍了mybatis中SqlSessionFactory的创建过程,今天来学习它默认实现中的唯一属性Configuration ​

回顾

还是最开始的mybatis源码环境中的测试代码如下图:

1测试代码.jpg

利用mybatis查出数据只用三步:创建SqlSessionFactory、通过SqlSessionFactory创建SqlSession、SqlSession执行selectOne方法。

上一篇文章梳理了SqlSessionFactory创建过程的源码,发现它返回的是它的默认实现类DefaultSqlSessionFactory,而默认实现类有有唯一的一个属性configuration,所以SqlSessionFactory根本的依赖还是Configuration类。

Configuration基础信息说明

Configuration类中有很多的属性,下面是基础属性的源码以及部分说明如下图:

2基本属性.jpg

上面主要是一些settings属性,settings属性是MyBatis 的基础性设置,它们会改变 MyBatis 的运行时行为。更加完整的说明在官方文档上:https://mybatis.org/mybatis-3/zh/configuration.html。去掉zh可以查看英文版本。

这里面有一个熟悉protected Properties variables = new Properties();这个属性对应是我们在mybatis配置文件中有时会配置的properties节点的内容,有时候我们会配置url、driver、username、password等信息。然后在其他节点使用${}来使用。

扩展属性和无参构造

上面介绍了决定mybatis一些基础行为的属性,在Configuration还存有一些mybatis可用来扩展的和运行中需要信息,下图中是这些属性已经Configuration的无参构造函数:

3集合无参构造.jpg

上一节是mybatis中的环境配置信息,而上图是一些mybatis运行中要用到的信息,比如:resultMap集合、sql语句集合、插件列表、缓存、类型别名、类型处理器等。

其中很多属性使用的是Configuration中的了一个内部静态类StrictMap,它继承自HashMap,对HashMap的装饰在于增加了put时防重复的处理,get时取不到值时候的异常处理,这样在使用时就不需要关心各种异常,简化应用层逻辑。

Configuration的无参构造函数主要往typeAliasRegistry中put了一些数据,typeAliasRegistry是类型注册器,通过这段代码知道为什么可以在配置文件中配置“”这类信息了,因为通过type的值能够找到对应的类。

再看parse方法

在上一篇文章SqlSessionFactory创建过程中讲到了Configuration是通过无参构造函数创建了一个Configuration对象,然后在最后调用了parse方法。无参构造函数上一节已经进行了说明,最后再来看上一篇文章最后的parse方法调用的parseConfiguration方法如下图:

4解析xml.jpg

这次在看parseConfiguration方法中的内容就更加清楚在干嘛了。

总结

今天只梳理了Configuration中包含的属性以及默认构造函数,分析完成后最终还是指向了上一篇文章的parseConfiguration方法,那么从下一篇文章开始就来仔细分析一下parseConfiguration对Configuration具体做了哪些设置以及流程。

到此这篇关于mybatis的Configuration详解的文章就介绍到这了,更多相关mybatis Configuration内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java 安全ysoserial URLDNS利用链分析

    java 安全ysoserial URLDNS利用链分析

    这篇文章主要为大家介绍了java 安全ysoserial URLDNS利用链分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Java 网络编程之 TCP 实现简单的聊天系统

    Java 网络编程之 TCP 实现简单的聊天系统

    这篇文章主要介绍了Java 网络编程之 TCP 实现简单的聊天系统,帮助大家更好的理解和学习Java 网络编程,感兴趣的朋友可以了解下
    2020-11-11
  • Jenkins集成SonarQube的方法详解

    Jenkins集成SonarQube的方法详解

    这篇文章主要介绍了Jenkins集成SonarQube的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring框架JdbcTemplate数据库事务管理完全注解方式

    Spring框架JdbcTemplate数据库事务管理完全注解方式

    这篇文章主要介绍了Spring框架JdbcTemplate数据库事务管理及完全注解方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • SpringMVC Validator验证示例

    SpringMVC Validator验证示例

    SpringMVC服务器验证一种是有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证,本篇文章主要介绍,有兴趣的可以了解一下。
    2017-01-01
  • java中如何判断对象是否是垃圾

    java中如何判断对象是否是垃圾

    这篇文章主要介绍了java中如何判断对象是否是垃圾,Java有两种算法判断对象是否是垃圾:引用计数算法和可达性分析算法,需要的朋友可以参考下
    2023-04-04
  • Java实现将word转换为html的方法示例【doc与docx格式】

    Java实现将word转换为html的方法示例【doc与docx格式】

    这篇文章主要介绍了Java实现将word转换为html的方法,结合实例形式分析了java针对doc与docx格式文件的相关转换操作技巧,需要的朋友可以参考下
    2019-03-03
  • Java原子类中的AtomicInteger类详解

    Java原子类中的AtomicInteger类详解

    这篇文章主要介绍了Java原子类中的AtomicInteger类详解,原子类可以保证对"变量"操作的,原子性、有序性、可见性,我们可以通过AtomicInteger类,来看看它们是怎样工作的,需要的朋友可以参考下
    2023-10-10
  • SpringSecurity如何设置白名单策略

    SpringSecurity如何设置白名单策略

    这篇文章主要介绍了SpringSecurity如何设置白名单策略,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 浅析Java内存模型与垃圾回收

    浅析Java内存模型与垃圾回收

    下面小编就为大家带来一篇浅析Java内存模型与垃圾回收。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-05-05

最新评论