一个代理对象调用另一个代理对象(mybatis mapperproxy)引发参数类型不匹配

zpgglvta  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(315)

我用一个代理调用另一个代理失败。总是引发参数类型不匹配异常。有人能帮忙吗?
这是密码。

  1. // 1, use mybatis sqlSessionFactory create a Proxy object for MapperProxy.
  2. @Suppress("UNCHECKED_CAST")
  3. private fun <T> createMapper(sqlSessionFactory: SqlSessionFactory, clazz: Class<T>): T {
  4. return Proxy.newProxyInstance(
  5. clazz.classLoader,
  6. arrayOf(clazz),
  7. KtMapperProxy(
  8. sqlSessionFactory.configuration.getMapper(
  9. clazz,
  10. sqlSessionFactory.openSession()
  11. )
  12. )
  13. ) as T
  14. }
  15. // 2, this class is the Proxy class.
  16. class KtMapperProxy<T>(private val mapper: T) : InvocationHandler {
  17. override fun invoke(proxy: Any, method: Method, args: Array<Any?>?): Any {
  18. return method.invoke(mapper, args)
  19. }
  20. }
  21. // 3, here is the UserMapper class method be called.
  22. fun getById(@Param("id") id: Long): User
  23. // 4, this is test.
  24. @Test
  25. fun `test mapper query`() {
  26. val userMapper = DataSourceHelper.getMapper(sqlSessionFactory, UserMapper::class.java)
  27. assertEquals(userMapper.getById(1L).username, "user_1")
  28. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题