温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

深入浅析mybatis中的Configuration

发布时间:2020-11-04 14:34:38 来源:亿速云 阅读:121 作者:Leah 栏目:开发技术

本篇文章为大家展示了深入浅析mybatis中的Configuration,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

mybatis源码环境中的测试代码如下图:

深入浅析mybatis中的Configuration

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

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

Configuration基础信息说明

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

深入浅析mybatis中的Configuration

上面主要是一些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的无参构造函数:

深入浅析mybatis中的Configuration

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

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

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

再看parse方法

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

深入浅析mybatis中的Configuration

上述内容就是深入浅析mybatis中的Configuration,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI