Mapped Statements collection already contains value for簡直了,根本不知道錯在哪
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [H:\JAVA practice\seckill\target\classes\mapper\SecKillDao.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.imooc.seckill.dao.SecKillDao.reduceNumber
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:484)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:355)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 39 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.imooc.seckill.dao.SecKillDao.reduceNumber
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:482)
... 42 more
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.imooc.seckill.dao.SecKillDao.reduceNumber
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:837)
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:809)
at org.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:633)
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:302)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:109)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
... 44 more
2019-09-03
鐵子??纯茨愕膍ybatis-config.xml
這個刪掉。和spring-dao 的配置重復了
2017-04-30
public interface SecKillDao {
? ?/**
? ? * 減庫存
? ? * @param seckillId
? ? * @param killTime
? ? * @return 返回值>1,表示表中插入的行數
? ? */
? ?int reduceNumber( long seckillId, ?Date killTime);
? ?SecKill queryById(long seckillId);
? ?/**
? ? * 查列表,偏移量表示要多少
? ? * @param offset
? ? * @param limit
? ? * @return
? ? */
? ?List<SecKill> queryAll(int offset, int limit);
}
2017-04-29
還有SecKillDao也貼一下,reduceNumber的參數有異常。
2017-04-28
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
? ? ? ?"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.imooc.seckill.dao.SecKillDao">
? ?<update id="reduceNumber">
? ? ? ?update
? ? ? ?seckill
? ? ? ?set
? ? ? ? ?number=number-1
? ? ? ?where
? ? ? ? ?seckill_id = #{seckillId}
? ? ? ?and start_time <![CDATA[<=]]> #{killTime},
? ? ? ?and end_time >= #{killTime},
? ? ? ?and number>0
? ?</update>
? ?<select id="queryById" parameterType="long" resultType="SecKill">
? ? ? ?SELECT seckill_id,name,number,start_time,end_time,create_time
? ? ? ?FROM seckill
? ? ? ?WHERE seckill_id = #{seckillId}
? ?</select>
? ?
? ?<select id="queryAll" resultType="SecKill" >
? ? ? ?SELECT seckill_id,name,number,start_time,end_time,create_time
? ? ? ?FROM seckill
? ? ? ?ORDER BY create_time DESC
? ? ? ?limit #{offset},#{limit}
? ?</select>
</mapper>
2017-04-20
根據錯誤提示應該是SecKillDao.xml這個文件解析出錯,仔細檢查下這個文件,看哪里配置有問題。