MyBatis之BoundSql

MyBatis官方文档

BoundSql维护了一条SQL语句

源码

/**
 * An actual SQL String got from an {@link SqlSource} after having processed any
 * dynamic content.
 * The SQL may have SQL placeholders "?" and an list (ordered) of an parameter
 * mappings 
 * with the additional information for each parameter (at least the property name
 * of the input object to read 
 * the value from). 
 * </br>
 * Can also have additional parameters that are created by the dynamic language (for loops, bind...).
 * 从SqlSource得到的处理了动态内容的真正的SQL。这个SQL可以有?占位符和一系列详细的参数信息。
 * 也可以是由动态语言(如loops,bind)创建的额外的参数。
 *
 * @author Clinton Begin
 */
public class BoundSql {
  // SQL语句
  private final String sql;
  // 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关键字
    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) {
    // 成员方法中,成员变量不需要加上this关键字
    return metaParameters.getValue(name);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值