类 MybatisXMLScriptBuilder

java.lang.Object
org.apache.ibatis.builder.BaseBuilder
com.baomidou.mybatisplus.core.MybatisXMLScriptBuilder

public class MybatisXMLScriptBuilder extends org.apache.ibatis.builder.BaseBuilder

试验性功能,解决mybatis堆内存过大的问题(看后期mybatis官方会不会解决堆内存占用问题)

由于大量重复sql节点,导致堆内存过大(本质上属于string导致的堆内存增大问题)

例如: <if test="createTime!=null">create_time=#{createTime}</if>等公共字段

解决方案: 将生成的xml节点值写入字符串常量池,减少后面重复字符串导致的问题

  • 方案一: 缓存一些特定的mybatis-plus生成的占位符与表达式和项目公共字段(改动有点多,需要增加一些特定xml属性来标记是mybatis-plus生成的节点,减少堆内存较少)
  • 方案二: 直接将节点内容intern写入至字符串常量池(改动少,减少堆内存多,弊端可能会将一些无重复的字符串写入至常量池)
  • 方案三: 模拟字符串常量池,减少重复字符串写入至堆内存(代码相对来说不好看点)
  • 从以下版本开始:
    3.5.3.2
    作者:
    nieqiurong
    另请参阅:
    • XMLScriptBuilder
    • 字段概要

      从类继承的字段 org.apache.ibatis.builder.BaseBuilder

      configuration, typeAliasRegistry, typeHandlerRegistry
    • 构造器概要

      构造器
      构造器
      说明
      MybatisXMLScriptBuilder(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.parsing.XNode context)
       
      MybatisXMLScriptBuilder(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.parsing.XNode context, Class<?> parameterType)
       
    • 方法概要

      修饰符和类型
      方法
      说明
      protected org.apache.ibatis.scripting.xmltags.MixedSqlNode
      parseDynamicTags(org.apache.ibatis.parsing.XNode node)
       
      org.apache.ibatis.mapping.SqlSource
       
      static String
      将前后空白符替换成空格

      从类继承的方法 org.apache.ibatis.builder.BaseBuilder

      booleanValueOf, createInstance, getConfiguration, integerValueOf, parseExpression, resolveAlias, resolveClass, resolveJdbcType, resolveParameterMode, resolveResultSetType, resolveTypeHandler, resolveTypeHandler, stringSetValueOf

      从类继承的方法 java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • MybatisXMLScriptBuilder

        public MybatisXMLScriptBuilder(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.parsing.XNode context)
      • MybatisXMLScriptBuilder

        public MybatisXMLScriptBuilder(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.parsing.XNode context, Class<?> parameterType)
    • 方法详细资料

      • parseScriptNode

        public org.apache.ibatis.mapping.SqlSource parseScriptNode()
      • replaceLeadingAndTrailingWhitespace

        public static String replaceLeadingAndTrailingWhitespace(String str)
        将前后空白符替换成空格
        参数:
        str - 字符串 (非空)
        返回:
        处理后文本
        从以下版本开始:
        3.5.10.1
      • parseDynamicTags

        protected org.apache.ibatis.scripting.xmltags.MixedSqlNode parseDynamicTags(org.apache.ibatis.parsing.XNode node)