Mybatis SqlSource 与 BoundSql
所属分类 mybatis
浏览量 91
SqlSource用于描述通过注解或XML配置的SQL信息
BoundSql getBoundSql(Object parameterObject) 获取对SQL信息进行封装的BoundSql实例
@Select、@Insert、@Delete、@Update、@SelectProvider、@InsertProvider、@DeleteProvider和@UpdateProvider
public interface SqlSource {
BoundSql getBoundSql(Object parameterObject);
}
SqlSource接口实现
DynamicSqlSource ProviderSqlSource RawSqlSource StaticSqlSource
DynamicSqlSource
XML 和 @Select、@Update等注解配置的SQL信息
这些SQL通常包含动态SQL配置或者参数占位符,需要在Mapper调用时才能确定最终的SQL语句
ProviderSqlSource
通过@SelectProvider、@InsertProvider、@DeleteProvider和@UpdateProvider注解配置的SQL信息
RawSqlSource
XML配置的SQL信息,与DynamicSqlSource唯一的区别在于,其只描述不包含参数占位符且在解析XML配置时就能确定的SQL信息
StaticSqlSource
经过ProviderSqlSource、DynamicSqlSource或者RawSqlSource解析后得到的静态SQL信息
BoundSql
对SQL语句及参数信息的封装,是SqlSource解析后的结果。
Executor 接口方法 BoundSql作为入参,
Executor是将BoundSql作为SQL信息来执行SQL语句的
BoundSql只是封装了SQL语句、参数映射、Mapper调用时传入的参数对象和一个反射工具类,
其这几个属性对应的值都是在构造BoundSql实例时通过构造函数传入
public class BoundSql {
private final String sql;
private final List< ParameterMapping> parameterMappings;
private final Object parameterObject;
private final Map< String, Object> additionalParameters;
private final MetaObject metaParameters;
public BoundSql(Configuration configuration, String sql, List< ParameterMapping> parameterMappings, Object parameterObject) {
this.sql = sql;
this.parameterMappings = parameterMappings;
this.parameterObject = parameterObject;
this.additionalParameters = new HashMap< >();
this.metaParameters = configuration.newMetaObject(additionalParameters);
}
}
上一篇
下一篇
Springboot 过滤器 拦截器 全局异常处理
jackson 笔记
mybatis之MappedStatement getBoundSql
小红书视频下载
羽毛球新手学习顺序
mybtais 动态sql注解