2017-05-14 3 views
0

Ich habe einen mybatis mapperWie bekomme ich die sqlSession-Instanz in mybatis mapper proxy?

public interface FooMapper { 
    @Select("select now()") 
    String getTime(); 
} 

wenn Debug-I unter info

enter image description here

ich sqlSession Instanz zu bekommen habe. Also habe ich versucht, Reflektionsweise zu verwenden, um sqlSession zu bekommen.

Field hField = fooMapper.getClass().getDeclaredField("h"); 

    MapperProxy mapperProxy = (MapperProxy) hField.get(fooMapper); 

    Field sqlSessionField = mapperProxy.getClass().getDeclaredField("sqlSession"); 
    SqlSession sqlSession = (SqlSession) sqlSessionField.get(mapperProxy); 

aber eigentlich habe ich unten Fehler

java.lang.NoSuch FieldException: h 
    at java.lang.Class.getDeclaredField(Class.java:2070) 

So wie sqlSession Instanz in fooMapper durch Reflexion Weise oder andere Art und Weise zu bekommen (wenn Reflexion unmöglich ist)?

Antwort

0

Dies funktioniert:

((MapperProxy)((Proxy)fooMapper).h).sqlSession 

MapperProxy von org.apache.ibatis.binding

Proxy von Java.lang.reflect

Verwandte Themen