XMLLanguageDriver:默认的LanguageDriver,可以处理动态sql和静态sql
RawLanguageDriver:只可以处理静态sql
select id, name, age
from ${tableName}
name = #{name}
and age = #{age}
order by id
XMLscriptBuilder#parsescriptNode
XMLscriptBuilder#parseDynamicTags
| 标签 | 作用 |
|---|---|
| IfSqlNode | 将if标签的内容转为IfSqlNode |
| WhereSqlNode | 将where标签的内容转为WhereSqlNode |
| TextSqlNode | 含有${}占位符的静态文本 |
| StaticTextSqlNode | 纯静态文本或含有#{}占位符 |
| SqlSource | 作用 |
|---|---|
| DynamicSqlSource | 动态sql |
| ProviderSqlSource | @*Provider 注解 提供的 SQL ,这个注解在通用mapper中用的最多,后续分析 |
| RawSqlSource | 静态sql |
| StaticSqlSource | 仅会含有?的sql |
org.apache.ibatis.builder.SqlSourceBuilder#parse
ParameterMappingTokenHandler#handleToken
name = #{name,jdbcType=VARCHAR,typeHandler=org.apache.ibatis.type.StringTypeHandler}
动态sql
[1]https://blog.csdn.net/pan_junbiao/article/details/106763772
[2]https://blog.csdn.net/isea533/article/details/78493852



