xNode

Mybatis源码解析-Mybatis初始化过程

丶灬走出姿态 提交于 2021-02-10 06:34:29
测试方法 public class UserMapperTest { private UserMapper userMapper; SqlSession sqlSession = null; SqlSessionFactory sqlSessionFactory = null; @Before public void setUp() throws Exception { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //openSession(boolean autoCommit) 设置事务是否自动提交 sqlSession = sqlSessionFactory.openSession(true); // 获取动态代理实现类 this.userMapper = sqlSession.getMapper(UserMapper.class); } @Test public void testQueryUserById() { User user = userMapper

mybatis源码分析(二)------------配置文件的解析

依然范特西╮ 提交于 2021-01-13 08:34:30
这篇文章中,我们将讲解配置文件中 properties,typeAliases,settings和environments这些节点的解析过程。 一 properties的解析 private void propertiesElement(XNode context) throws Exception { if (context != null ) { //解析properties的子节点,并将这些子节点内容转为属性对象Properties Properties defaults = context.getChildrenAsProperties(); //获取properties节点中resource的属性值 String resource = context.getStringAttribute("resource" ); //获取properties节点中url的属性值 String url = context.getStringAttribute("url" ); //resource和url不能同时存在 if (resource != null && url != null ) { throw new BuilderException("The properties element cannot specify both a URL and a resource based

Mybatis中mapper的xml解析详解

牧云@^-^@ 提交于 2020-11-30 23:41:04
上一篇文章分析了 mapper注解关键类MapperAnnotationBuilder,今天来看mapper的项目了解析关键类XMLMapperBuilder。 基础介绍 回顾下之前是在分析 configuration的初始化过程,已经进行到了最后一步mapperElement(root.evalNode("mappers")),这个方法里有两种解析mapper的方法,一种是解析类,一种是解析xml文件,上一篇文章在讲解析类中的注解,今天说到的就是解析xml的流程,关键代码如下: 解析 mapper有4种情况可以分成根据类解析和根据xml文件解析两类,这次是后面这类,主体方法还是比较简单。 首先根据 inputStream, configuration, resource或url, configuration.getSqlFragments()四个参数初始化一个XMLMapperBuilder; 然后执行 XMLMapperBuilder对象的parse方法; 初始化 XMLMapperBuilder 初始化过程源码已在上图的右侧部分,初始化 XMLMapperBuilder方法的流程与加载mybatis的配置文件关键类XMLConfigBuilder及其相似,都是通过xml文件创建XPathParser对象作为XMLMapperBuilder对象的parse属性

mybatis源码-解析配置文件(三)之配置文件Configuration解析

こ雲淡風輕ζ 提交于 2020-11-08 10:09:46
@[TOC] 1. 简介 1.1 系列内容 本系列文章讲解的是 mybatis解析配置文件 内部的逻辑, 即 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 其背后的逻辑。 1.2 适合对象 了解如何使用 mybatis 来访问数据库。可参看《 mybatis 初步使用(IDEA的Maven项目, 超详细) 》; 具备 DOM 解析 XML 的基本知识。 可参考《 mybatis源码-解析配置文件(一)之XML的DOM解析方式 。 了解整个配置文件解析是什么样的一个流程。可参考《 mybatis源码-解析配置文件(二)之解析的流程 》。 1.3 本文内容 <code>Configuration</code>类的讲解; <code>parser.parse()</code>将配置解析到<code>Configuration</code>中的过程; 2. 配置文件 mybatis使用到了配置文件, 本文中, 不讲解 mapper.xml , 后续会另开章节重点讲解。 2.1 mysql.properties

Mybatis 解析配置文件的源码解析

女生的网名这么多〃 提交于 2020-11-02 06:21:46
前言 使用过Mybatis 的都知道,Mybatis 有个配置文件,用来配置数据源,别名,一些全局的设置如开启缓存之类的, 在 Mybatis 在初始化的时候,会加载该配置文件,会对该配置文件进行解析;它采用的是 DOM 的方式进行解析,它这把整个配置文件加载到内存中形成一种树形结构,之后使用 XPath 的方式可以从中获取我们到需要的值。下面来看下 Mybatis 是如何解析配置文件的。 XPath 在查看源码之前,先来看下 XPath 是什么东东,使用过 Python + selenium 进行过自动化的应该都知道,就是通过 XPath 来定位页面元素,如按钮等,之后添加事件来代替人工点击页面。简单点来说,XPath 就是用来定位 XML 元素的,它可用来在 XML 文档中对元素和属性进行遍历。XPath 有它自己的语法,具体的可以参考 W3School,XPath 教程 配置文件 Mybatis 的配置文件大概如下所示,源码分析通过它来进行分析: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

如何回怼面试官的MyBatis执行过程初始化执行问题

落花浮王杯 提交于 2020-10-26 08:28:24
前言 在了解MyBatis架构以及核心内容分析后,我们可以研究MyBatis执行过程,包括 MyBatis初始化 SQL执行过程 而且在面试会问到一下关于MyBatis初始化的问题,比如: Mybatis需要初始化哪些? MyBatis初始化的过程? MyBatis初始化 在 MyBatis 初始化过程中,会加载 mybatis-config.xml 配置文件、Mapper.xml映射配置文件以及 Mapper 接口中的注解信息,解析后的配置信息会形成相应的对象并保存到 Configuration 对象中。初始化过程可以分成三部分: 解析mybatis-config.xml 配置文件 SqlSessionFactoryBuilder XMLConfigBuilder Configuration 解析Mapper.xml映射配置文件 XMLMapperBuilder::parse() XMLStatementBuilder::parseStatementNode() XMLLanguageDriver SqlSource MappedStatement 解析Mapper接口中的注解 MapperRegistry MapperAnnotationBuilder::parse() 解析mybatis-config.xml 配置文件 MyBatis 的初始化流程的 入口 是

Mybatis源码解析,一步一步从浅入深(五):mapper节点的解析

偶尔善良 提交于 2020-04-14 19:23:21
【推荐阅读】微服务还能火多久?>>> 在上一篇文章 Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例 中我们谈到了properties,settings,environments节点的解析,总结一下,针对示例工程的configuration.xml文件来说properties节点的解析就是将dbConfig.properties中的数据库配置信息加载到了configuration实例的variables中,settings节点的解析让configuration使用了我们配置的log4j日志系统,environments节点的解析生成了数据库环境类(Environment)的实例对象,并将这个示例对象赋值给了 configuration的environment属性。那么接下来我们着重看一下mappers节点的解析。mappers节点的解析非常重要,所以本文篇幅会很长。 一,先看看示例工程的mappers节点和userDao-mapping.xml文件   mappers节点:      <!-- 映射文件,mybatis精髓 --> < mappers > < mapper resource ="mapper/userDao-mapping.xml" /> </ mappers >   userDao

mybatis源码配置文件解析之一:解析properties标签

一个人想着一个人 提交于 2020-04-14 13:28:05
【推荐阅读】微服务还能火多久?>>> mybatis作为日常开发的常用ORM框架,在开发中起着很重要的作用,了解其源码对日常的开发有很大的帮助。源码版本为:3-3.4.x,可执行到github进行下载。 从这篇文章开始逐一分析mybatis的核心配置文件(mybatis-config.xml),今天先来看properties标签的解析过程。 一、概述 在单独使用mybatis的时候,mybatis的核心配置文件(mybatis-config.xml)就显的特别重要,是整个mybatis运行的基础,只有把配置文件中的各个标签正确解析后才可以正确使用mybatis,下面看properties标签的配置,properties标签的作用就是加载properties文件或者property标签,下面看其具体配置,实例如下 <properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties> 上面是配置的properties标签的配置,在标签中配置了resource属性和property子标签。下面看具体的解析流程

Newtonsoft.Json.JsonConvert.cs

青春壹個敷衍的年華 提交于 2020-04-06 10:01:49
ylbtech-Newtonsoft.Json.JsonConvert.cs 1. 返回顶部 1、 #region 程序集 Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed // D:\sinopec-tbm\源代码\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll #endregion using System; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; namespace Newtonsoft.Json { // // 摘要: // Provides methods for converting between common language runtime types and JSON // types. public static class JsonConvert { // // 摘要: // Represents JavaScript's boolean value true as a string. This field is read-only. public static

Linux 修改ip,host,配置可访问ip,域名

帅比萌擦擦* 提交于 2019-12-29 21:57:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 修改ip,网关:vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改host name:vi /etc/sysconfig/network 配置可访问的ip和域名: vi /etc/hosts (追加“ 192.168.x.x node01”) 来源: oschina 链接: https://my.oschina.net/u/3734816/blog/3149330