mapper如何使用静态内部类作为resultType

日常开发中在编写类文件有时会用到静态内部类,
官方指出:使用静态内部类可以将相关的类组织在一起,提高代码的可读性和可维护性。它可以将一些只在外部类中使用的类隐藏起来,减少对外部类的暴露。
我是偷懒所以才这么用,如下:

在这里插入图片描述
其实日常使用时是不建议在静态内部类上加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 正确地解析静态内部类的类名。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis使用自定义函数,可以按照以下步骤进行操作: 1.创建一个自定义函数的 Java 类,并继承 `org.apache.ibatis.scripting.xmltags.SQLFragments` 类。 ```java public class CustomFunctions extends SQLFragments { public static String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 在这个类中,我们定义了一个静态方法 `sayHello`,用于返回一个字符串的拼接结果。 2.在 Mapper 文件中使用 `${}` 占位符引用自定义函数。例如: ```xml <select id="selectHello" resultType="String"> SELECT ${CustomFunctions.sayHello('World')} </select> ``` 这里我们在 SQL 语句中使用 `${CustomFunctions.sayHello('World')}` 占位符引用了自定义函数。 3.在主项目的 MyBatis 配置文件中注册自定义函数。例如: ```xml <configuration> <settings> <setting name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/> </settings> <typeAliases> <typeAlias type="com.example.subpackage.CustomFunctions" alias="CustomFunctions"/> </typeAliases> <languageDrivers> <languageDriver type="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"> <property name="defaultScriptingLanguage" value="org.apache.ibatis.scripting.xmltags.XMLLanguageDriver"/> <property name="customFunctions" value="CustomFunctions"/> </languageDriver> </languageDrivers> </configuration> ``` 在这个配置文件中,我们注册了一个类型别名 `CustomFunctions`,用于引用自定义函数的 Java 类。然后在语言驱动配置中,将自定义函数的类实例 `CustomFunctions` 配置为自定义函数。 需要注意的是,在使用自定义函数时,需要确保自定义函数的 Java 类在主项目和子 Jar 包中都存在,并且命名空间和包路径保持一致。此外,如果自定义函数需要访问数据库,还需要在主项目和子 Jar 包中都配置相应的数据源和连接信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值