[MyBatis源码分析系列] BoundSql

BoundSql

简介

SqlSource得到的处理了动态内容的真正的SQL。这个SQL可以有?占位符和一系列参数。
也可以是由动态语言(如loops,bind)创建的额外的参数。

源码

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<String, Object>();
		this.metaParameters = configuration.newMetaObject(additionalParameters);
	}

	public String getSql(){
		return sql;
	}

	public List<ParameterMapping> getParameterMappings(){
		return parameterMappings;
	}

	public Object getParameterObject(){
		return parameterObject;
	}
	
	public boolean hasAdditionalParameter(String name){
		String paramName = new PropertyTokenizer(name).getName();
		return additionalParameters.containsKey(paramName);
	}

	public void setAdditionalParameter(String name, Object value) {
	    metaParameters.setValue(name, value);
  	}

	public Object getAdditionalParameter(String name) {
	    return metaParameters.getValue(name);
   }
}

猜你喜欢

转载自blog.csdn.net/weixin_36210698/article/details/83506832
今日推荐