mybatis源码-解析配置文件(四-1)之配置文件Mapper解析(cache) (2)

关于 shortKey, 其实就是我们以全限定名作为属性时, 它取得是分隔符分割后最后的一项。

// 将 key 以 . 分割, 并获取最后一项作为 shortKey private String getShortName(String key) { final String[] keyParts = key.split("\\."); return keyParts[keyParts.length - 1]; }

shortKey 它的作用就是类似一个模糊查询的功能, 比如说我们要调用的是 com.mybatis.homejim.mapper.StudentMapper.selectAll 这个函数, 我们可以写

selectList("com.mybatis.homejim.mapper.StudentMapper.selectAll");

mybatis 中加入 shortKey 之后, 我们只需要写

selectList("selectAll");

但是, 在实际使用时用处不大, 很多函数基本都是会是二义性的, 不明白为何不取消。

3.3.3 Ambiguity

Ambiguity是 StrictMap 中的静态内部类。

protected static class Ambiguity { final private String subject; public Ambiguity(String subject) { this.subject = subject; } public String getSubject() { return subject; } }

其作用记录存在二义性的 key, 告诉使用者, 你的这个 key 是二义性的。

3.3.4 get public V get(Object key) { // value 为空则报错 V value = super.get(key); if (value == null) { throw new IllegalArgumentException(name + " does not contain value for " + key); } // 二义性也报错 if (value instanceof Ambiguity) { throw new IllegalArgumentException(((Ambiguity) value).getSubject() + " is ambiguous in " + name + " (try using the full name including the namespace, or rename one of the entries)"); } // 正常情况下应该是返回 return value; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxpwd.html