在上篇文章中, 我们分析了Executor执行器的源码, Executor利用MappedStatement和参数通过一定的调度, 完成了sql参数的映射、sql的执行、结果集的处理, 即Executor就是将相关组件进行了调度而已
在执行sql之前, 我们分析得到, Executor会利用Transaction对象来获取连接, 然后利用这个连接去执行sql, 本篇文章我们就来分析下Transaction的功能以及SqlSession这个组件
在第一篇文章中, 我们对Mybatis的初始化进行了简单的分析, 其中会对Mybatis的配置文件进行分析, 将里面的一个个标签映射成Java对象, 我们再来看看对<environments>标签的解析源码, 先贴上之前的配置文件:
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="sql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://dev1-linux.pospal:3306/pospal?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=true&allowMultiQueries=true"/><property name="username" value="xxx"/><property name="password" value="xxx"/></dataSource></environment></environments><mappers><mapper resource="l"/></mappers>
</configuration>
可以看到, 我们配置了一个development环境, 在环境中配置了一个datasource数据源, 与此同时, 配置了一个事务管理器transactionManager, 那么这个是怎么映射到java对象的呢?
private void environmentsElement(XNode context) {if (context != null) {if (environment == null) {environment = StringAttribute("default");}for (XNode child : Children()) {String id = StringAttribute("id");if (isSpecifiedEnvironment(id)) {TransactionFactory txFactory = transactionManagerElement(child.evalNode("transactionManager"));DataSourceFactory dsFactory = d
本文发布于:2024-01-30 14:41:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170659686920735.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |