BoundSql

BoundSql 在 Mybatis 中的作用是保存Sql。这里需要注意的是负责组装Sql不是 BoundSql,BoundSql 只负责保存。

源码

public class BoundSql {

    // ${} 和 #{} 替换为占位符的sql,每个 #{} 替换完之后就是一个占位符 ?
    private String sql;
    
    // 保存 sql 中的 #{},包括其属性、名称等,和替换为占位符 ? 一一对应
    private List<ParameterMapping> parameterMappings;

    //保存用户传入的数据
    private Object parameterObject;

    private Map<String, Object> additionalParameters;

    private MetaObject metaParameters;
    
    ...
    
}

以一个 Sql 语句为例,解释下 BoundSql 各自属性保存的内容。

SELECT * FROM fms_bank_card WHERE USER_ID = #{userId} AND CARD_TYPE = #{cardType} ORDER BY ID DESC;

Sql 查询结果对应的实体类为BankCard,传入的参数也是 BankCard {userId=1,cardType=1},那么BoundSql 各自属性保存内容如下:

  1. sql 属性保存的是
SELECT * FROM fms_bank_card WHERE USER_ID = ? AND CARD_TYPE = ? ORDER BY ID DESC;
  1. parameterMappings,保存的是 #{userId}、#{cardType}信息,以#{userId}为例,保存内容为:
ParameterMapping{property='userId', mode=IN, javaType=java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'
  1. parameterObject 保存的就是用户传入的 BankCard 实例
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容