Mybatis源代码中如何详细解析其功能流程?

2026-05-24 05:230阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计5420个文字,预计阅读时间需要22分钟。

Mybatis源代码中如何详细解析其功能流程?

Mybatis在初始化时,会读取XML中的SQL语句,解析后生成SqlSource对象。SqlSource对象分为两种:DynamicSqlSource和RawSqlSource。

DynamicSqlSource:动态SQL,获取SQL(通过getBoundSQL方法)时生成参数化SQL。

RawSqlSource:原始SQL。

SQL解析

Mybatis在初始化的时候,会读取xml中的SQL,解析后会生成SqlSource对象,SqlSource对象分为两种。

  • DynamicSqlSource,动态SQL,获取SQL(getBoundSQL方法中)的时候生成参数化SQL。
  • RawSqlSource,原始SQL,创建对象时直接生成参数化SQL。

因为RawSqlSource不会重复去生成参数化SQL,调用的时候直接传入参数并执行,而DynamicSqlSource则是每次执行的时候参数化SQL,所以RawSqlSourceDynamicSqlSource的性能要好的。

解析的时候会先解析include标签和selectkey标签,然后判断是否是动态SQL,判断取决于以下两个条件:

  • SQL中有动态拼接字符串,简单来说就是是否使用了${}表达式。注意这种方式存在SQL注入,谨慎使用。
阅读全文

本文共计5420个文字,预计阅读时间需要22分钟。

Mybatis源代码中如何详细解析其功能流程?

Mybatis在初始化时,会读取XML中的SQL语句,解析后生成SqlSource对象。SqlSource对象分为两种:DynamicSqlSource和RawSqlSource。

DynamicSqlSource:动态SQL,获取SQL(通过getBoundSQL方法)时生成参数化SQL。

RawSqlSource:原始SQL。

SQL解析

Mybatis在初始化的时候,会读取xml中的SQL,解析后会生成SqlSource对象,SqlSource对象分为两种。

  • DynamicSqlSource,动态SQL,获取SQL(getBoundSQL方法中)的时候生成参数化SQL。
  • RawSqlSource,原始SQL,创建对象时直接生成参数化SQL。

因为RawSqlSource不会重复去生成参数化SQL,调用的时候直接传入参数并执行,而DynamicSqlSource则是每次执行的时候参数化SQL,所以RawSqlSourceDynamicSqlSource的性能要好的。

解析的时候会先解析include标签和selectkey标签,然后判断是否是动态SQL,判断取决于以下两个条件:

  • SQL中有动态拼接字符串,简单来说就是是否使用了${}表达式。注意这种方式存在SQL注入,谨慎使用。
阅读全文