MyBatis PropertyTokenizer

Posted 魔有追求

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis PropertyTokenizer相关的知识,希望对你有一定的参考价值。

PropertyTokenizer

package org.apache.ibatis.reflection.property;
import java.util.Iterator;
/*
    例1: 参数: user[1].linkman.name
        children=linkman.name
        indexedName=user[1]
        name=user
        index=1
    例2: 参数: user
        children=null
        indexedName=user
        name=user
        index=null
    hasNext()判断是否有子属性,next()获取子属性。
*/
public class PropertyTokenizer implements Iterator<PropertyTokenizer> {
  private String name; //名称
  private final String indexedName; //带索引的名称
  private String index; //索引
  private final String children; //子名称

  public PropertyTokenizer(String fullname) {
    int delim = fullname.indexOf('.');
    if (delim > -1) {
      name = fullname.substring(0, delim);
      children = fullname.substring(delim + 1);
    } else {
      name = fullname;
      children = null;
    }
    indexedName = name;
    delim = name.indexOf('[');
    if (delim > -1) {
      index = name.substring(delim + 1, name.length() - 1);
      name = name.substring(0, delim);
    }
  }


  @Override
  public boolean hasNext() {
    return children != null;
  }

  @Override
  public PropertyTokenizer next() {
    return new PropertyTokenizer(children);
  }

}

以上是关于MyBatis PropertyTokenizer的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis 源码学习-反射工具(Property 工具)

[MyBatis源码分析 - 反射器模块 - 组件五] Property 工具集

MyBatis框架之迭代器模式

MyBatis学习总结-MyBatis快速入门的系列教程

Mybatis-Plus:了解Mybatis-Plus快速开始(Mybatis + Mybatis-Plus,Mybatis-Plus自动做了属性映射)

MyBatis1:MyBatis入门