我用一个代理调用另一个代理失败。总是引发参数类型不匹配异常。有人能帮忙吗?
这是密码。
// 1, use mybatis sqlSessionFactory create a Proxy object for MapperProxy.
@Suppress("UNCHECKED_CAST")
private fun <T> createMapper(sqlSessionFactory: SqlSessionFactory, clazz: Class<T>): T {
return Proxy.newProxyInstance(
clazz.classLoader,
arrayOf(clazz),
KtMapperProxy(
sqlSessionFactory.configuration.getMapper(
clazz,
sqlSessionFactory.openSession()
)
)
) as T
}
// 2, this class is the Proxy class.
class KtMapperProxy<T>(private val mapper: T) : InvocationHandler {
override fun invoke(proxy: Any, method: Method, args: Array<Any?>?): Any {
return method.invoke(mapper, args)
}
}
// 3, here is the UserMapper class method be called.
fun getById(@Param("id") id: Long): User
// 4, this is test.
@Test
fun `test mapper query`() {
val userMapper = DataSourceHelper.getMapper(sqlSessionFactory, UserMapper::class.java)
assertEquals(userMapper.getById(1L).username, "user_1")
}
暂无答案!
目前还没有任何答案,快来回答吧!