mybatis: Mapped Statements collection does not contain value for...

不止一次遇到这种异常,这次又纠结了好久,检查了所有的SQL语法、XML标签等等。原来是因为我在<select>标签上加了中文注释导致的,杯具..
先看异常Trace:
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for cn.btsf.sys.baseinfo.dao.AirlinesDao.findSpaceForAirlines
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:412)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:346)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:46)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:34)
at $Proxy20.findSpaceForAirlines(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.ibatis3.SqlSessionTemplate$7$1.doInSqlSession(SqlSessionTemplate.java:229)
... 34 more


网上看到的可能导致此类错异常的原因:

The three names have to match:
- interface = com.enlliance.inventory.mappers.SettingMapper.class
- mapper file = /com/enlliance/inventory/mappers/SettingMapper.xml
- mapper namespace = com.enlliance.inventory.mappers.SettingMapper

这次给自己上了一课,追加一个可能的原因: 在XML中写了中文注释,如:
<!--这是中文注释,可能导致异常-->
<select id="findSpaceForAirlines" resultType=".." >.....</select>

猜你喜欢

转载自layznet.iteye.com/blog/1021533
今日推荐