这次分析mybatis的xml文件

1.

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <configuration xmlns="http://mybatis.org/schema/mybatis-config"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://mybatis.org/schema/mybatis-config http://mybatis.org/schema/mybatis-config.xsd">
  5. xml编写...
  6. </configuration>

  2.资源配置

  1. <!--方法一: 从外部指定properties配置文件, 除了使用resource属性指定外,还可通过url属性指定url-->
  2. <!--方法二. 直接用name,value设置 -->
  3. <properties resource="org/apache/ibatis/builder/jdbc.properties">
  4. <property name="prop1" value="aaaa"/>
  5. <property name="jdbcTypeForNull" value="NULL" />
  6. </properties>

3.setting 标签

代码:

  1. <settings>
  2. <setting name="autoMappingBehavior" value="NONE"/>
  3. <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  4. <setting name="cacheEnabled" value="false"/>
  5. <setting name="proxyFactory" value="CGLIB"/>
  6. <setting name="lazyLoadingEnabled" value="true"/>
  7. <setting name="aggressiveLazyLoading" value="true"/>
  8. <setting name="multipleResultSetsEnabled" value="false"/>
  9. <setting name="useColumnLabel" value="false"/>
  10. <setting name="useGeneratedKeys" value="true"/>
  11. <setting name="defaultExecutorType" value="BATCH"/>
  12. <setting name="defaultStatementTimeout" value="10"/>
  13. <setting name="defaultFetchSize" value="100"/>
  14. <setting name="mapUnderscoreToCamelCase" value="true"/>
  15. <setting name="safeRowBoundsEnabled" value="true"/>
  16. <setting name="localCacheScope" value="STATEMENT"/>
  17. <setting name="jdbcTypeForNull" value="${jdbcTypeForNull}"/>
  18. <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString,xxx"/>
  19. <setting name="safeResultHandlerEnabled" value="false"/>
  20. <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.defaults.RawLanguageDriver"/>
  21. <setting name="callSettersOnNulls" value="true"/>
  22. <setting name="logPrefix" value="mybatis_"/>
  23. <setting name="logImpl" value="SLF4J"/>
  24. <setting name="vfsImpl" value="org.apache.ibatis.io.JBoss6VFS"/>
  25. <setting name="configurationFactory" value="java.lang.String"/>
  26. </settings>

4. typeAliases是用来设置类路径别名的

  1. <typeAliases>
  2. <typeAlias alias="User" type="com.majing.learning.mybatis.entity.User"/>
  3. </typeAliases>

别名其他介绍:https://blog.csdn.net/luoposhushengyizhuce/article/details/80791797

5.mappers配置方式,一看就懂

  1. <mappers>
  2. <mapper resource="org/apache/ibatis/builder/xsd/BlogMapper.xml"/>
  3. <mapper url="file:./src/test/java/org/apache/ibatis/builder/xsd/NestedBlogMapper.xml"/>
  4. <mapper class="org.apache.ibatis.builder.xsd.CachedAuthorMapper"/>
  5. <package name="org.apache.ibatis.builder.mapper"/>
  6. </mappers>

6.数据库标识:databaseIdProvider

  1. databaseIdProvidertype属性是必须的,不配置时会报错。上面这个属性值使用的是VendorDatabaseIdProvider类的别名。
  2.  
  3. property子元素是配置一个数据库,其中的name属性是数据库名称,value是我们自定义的别名,通过别名我们可以在SQL语句中标识适用于哪种数据库运行。
  4.  
  5. <databaseIdProvider type="DB_VENDOR">
  6. <property name="Apache Derby" value="derby"/>
  7. </databaseIdProvider>
  8.  
  9. 或者多个:
  10. <!--数据库厂商标示 -->
  11. <databaseIdProvider type="DB_VENDOR">
  12. <property name="Oracle" value="oracle"/>
  13. <property name="MySQL" value="mysql"/>
  14. <property name="DB2" value="d2"/>
  15. </databaseIdProvider>

7.environments 配置数据源:

  1. <environments default="development">
  2. <environment id="development">
  3. <transactionManager type="JDBC">
  4. <property name="" value=""/>
  5. </transactionManager>
  6. <dataSource type="UNPOOLED">
  7. <property name="driver" value="${driver}"/>
  8. <property name="url" value="${url}"/>
  9. <property name="username" value="${username}"/>
  10. <property name="password" value="${password}"/>
  11. </dataSource>
  12. </environment>
  13. </environments>

详细说明:https://blog.csdn.net/majinggogogo/article/details/71616712

8.typeHandlers type类型注册

  1. <typeHandlers>
  2. <typeHandler javaType="String" handler="org.apache.ibatis.builder.CustomStringTypeHandler"/>
  3. <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.apache.ibatis.builder.CustomStringTypeHandler"/>
  4. <typeHandler handler="org.apache.ibatis.builder.CustomLongTypeHandler"/>
  5. <package name="org.apache.ibatis.builder.typehandler"/>
  6. </typeHandlers>

...

  1. <objectFactory type="org.apache.ibatis.builder.ExampleObjectFactory">
  2. <property name="objectFactoryProperty" value="100"/>
  3. </objectFactory>
  4.  
  5. <objectWrapperFactory type="org.apache.ibatis.builder.CustomObjectWrapperFactory" />
  6.  
  7. <reflectorFactory type="org.apache.ibatis.builder.CustomReflectorFactory"/>
  8.  
  9. <plugins>
  10. <plugin interceptor="org.apache.ibatis.builder.ExamplePlugin">
  11. <property name="pluginProperty" value="100"/>
  12. </plugin>
  13. </plugins>

mybatis源码分析二的更多相关文章

  1. MyBatis源码分析(二)

    MyBatis的xml配置(核心配置) configuration(配置) properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处 ...

  2. mybatis 源码分析二

    1.SqlSession下的四大对象 Executor.StatementHandler.ParameterHandler.ResultSetHandler StatementHandler的作用是使 ...

  3. 精尽MyBatis源码分析 - MyBatis初始化(二)之加载Mapper接口与XML映射文件

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  4. 精尽MyBatis源码分析 - SQL执行过程(二)之 StatementHandler

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  5. Mybatis源码分析--关联表查询及延迟加载原理(二)

    在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...

  6. Mybatis源码分析之SqlSession和Excutor(二)

    通过上一篇文章的分析我们,我初步了解了它是如何创建sessionFactory的(地址:Mybatis源码分析之SqlSessionFactory(一)), 今天我们分析下Mybatis如何创建Sql ...

  7. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  8. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  9. Mybatis源码分析之Cache二级缓存原理 (五)

    一:Cache类的介绍 讲解缓存之前我们需要先了解一下Cache接口以及实现MyBatis定义了一个org.apache.ibatis.cache.Cache接口作为其Cache提供者的SPI(Ser ...

随机推荐

  1. NOI2016区间bzoj4653(线段树,尺取法,区间离散化)

    题目描述 在数轴上有 \(N\) 个闭区间 \([l_1,r_1],[l_2,r_2],...,[l_n,r_n]\) .现在要从中选出 \(M\) 个区间,使得这 \(M\) 个区间共同包含至少一个 ...

  2. SignalR 在React/GO技术栈的生产应用

    哼哧哼哧半年,优化改进了一个运维开发web平台. 本文记录SignalR在react/golang 技术栈的生产小实践. 1. 背景 有个前后端分离的运维开发web平台, 后端会间隔5分钟同步一次数据 ...

  3. VS Code Just My Code Debugging

    VS Code Just My Code Debugging VS Code for C++ doesn't support Just My Code Refer here: Add support ...

  4. TypeScript中将函数中的局部变量“导出”的方法

    首先是在模块a.js中声明一个可导出(export)的数据结构,例如: export class ModelInfo{ id: string; name:string; } 其次是在模块b中声明可导出 ...

  5. 【UE4 设计模式】设计模式一些概念

    定义 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 四人帮 GOF ( Gang of Four ...

  6. kivy画个半圆

    from kivy.uix.boxlayout import BoxLayout from kivy.app import App class BoxLayoutWidget(BoxLayout): ...

  7. 热身训练3 Palindrome

    Palindrome 简要题意:  我们有一个字符串S,字符串的长度不超过500000. 求满足S[i]=S[2n−i]=S[2n+i−2](1≤i≤n)(n≥2)的子串个数.  分析: 我们能通过简 ...

  8. C++实现红黑树

    红黑树的应用: 利用key_value对,快速查找,O(logn) socket与客户端id之间,形成映射关系(socket, id) 内存分配管理 一整块内存,不断分配小块 每分配一次,就加入到红黑 ...

  9. [WPF] 使用三种方式实现弧形进度条

    1. 需求 前天看到有人问弧形进度条怎么做,我模仿了一下,成果如下图所示: 当时我第一反应是可以用 Microsoft.Toolkit.Uwp.UI.Controls 里的 RadialGauge 实 ...

  10. 如何系统学习C 语言(中)之 指针篇

    谈到指针,我们可能会想到钟表上的指针,但这里的指针不是现实生活中看得见摸得着的钟表上的指针,c 语言中的指针只存在于逻辑思维中,物理上并不存在. 同时,指针也是C 语言中最精华的部分,通过灵活地运用指 ...