日常开发中在编写类文件有时会用到静态内部类,
官方指出:使用静态内部类可以将相关的类组织在一起,提高代码的可读性和可维护性。它可以将一些只在外部类中使用的类隐藏起来,减少对外部类的暴露。
我是偷懒所以才这么用,如下:
其实日常使用时是不建议在静态内部类上加public来修饰的,这么做的话还不如重新写一个类。
然后在mapper中想用这个静态内部类作为查询返回的对象(也就是resultType)时编译报错了,如下:
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.kingroad.docs.domain.archive.volumeRule.ArchiveFascicleReqDTO.ArchiveFascicleDetailReqDTO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.kingroad.docs.domain.archive.volumeRule.ArchiveFascicleReqDTO.ArchiveFascicleDetailReqDTO
此时mapper.xml中是这样的:
显示无法解析这个内部类,经查阅相关资料解决了这个问题,记录一下:
那么在 MyBatis 的映射文件中,静态内部类可以这样写:
也就是把 " . " 改为 " $ ",使用美元符号来分隔外部类和内部类的类名。这种方式可以让 MyBatis 正确地解析静态内部类的类名。