mybatis源码reflection包--参数解析器ParamNameResolver

ParamNameResolver是mybatis中用于解析方法参数名的工具类,它根据@Param注解或参数顺序生成参数名。在构造器中,它遍历方法参数,有@Param注解则取其value,否则依据配置决定是否使用实际参数名。getNamedParams函数则提供参数名到参数值的映射。通过对实例的调试,展示了 ParamNameResolver 的工作原理和结果。
摘要由CSDN通过智能技术生成

ParamNameResolver是一个参数名解析器,负责把方法的参数按顺序解析出来并进行标注。

1.因为设计到字符串处理,随便写一个方法进行debug跟踪

ParamNameResolver在构造器中对getUserInfo进行解析,逻辑很简单,获取该方法所有参数类型进行遍历,如果该参数上有@Param注解就获取Param中的value作为属性名,没有的话就判断配置中useActualParamName是否允许使用原始参数名,不允许就用参数顺序进行命名。最后把解析结果存到ParamNameResolver的names属性中。

 // 方法入参的参数次序表。键为参数次序,值为参数名称或者参数@Param注解的值
  private final SortedMap<Integer, String> names;
  // 该方法入参中是否含有@Param注解
  private boolean hasParamAnnotation;

  /**
   * 参数名解析器的构造方法
   * @param config 配置信息
   * @param method 要被分析的方法
   */
  public ParamNameResolver(Configuration config, Method method) {
    // 获取参数类型列表
    final Class<?>[] paramTypes = method.getParameterTypes();
    // 准备存取所有参数的注解,是二维数组
    final Annotation[][] paramAnnotations 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值