一:項目報錯:
java.lang.IllegalArgumentException: Mapped
Statements collection already contains value for
網上搜到各種原因:
1、由於使用ibatis的TempTestTableMapper.xml實現接口TempTestTableMapper.java中的方法的時候的id有重複的值,比如
<select id="queryTempTestTableMap" resultMap="TempTestTableResult"> 中的TempTestTableResult在一個xml文件中有兩個這樣的id,修改過來即可
無論我檢查多少遍,根本不存在重複的id,且報錯的時候指向的數據庫語句不止一個,由此懷疑是xml的問題。
2、user-mapper.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bmdc.dj.user.dao.UserDao">
<resultMap type="user" id="userResult">
<id property="user_id" column="USER_ID"/>
<result property="login_name" column="LOGIN_NAME"/>
<result property="real_name" column="REAL_NAME"/>
<result property="password" column="PASSWORD"/>
</resultMap>
<insert id="add" parameterType="user">
insert into users (user_id, login_name, real_name, password)13 values(#{user_id}, #{login_name}, #{real_name}, #{password}) </insert>
</mapper>
其中,namespace是接口路徑。Mybatis.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 別名 -->
<typeAliases>
<typeAlias type="com.bmdc.dj.user.domain.User" alias="user"/>
</typeAliases>
<mappers>
<mapper resource="com/bmdc/dj/user/dao/user-mapper.xml" />
</mappers>
</configuration>
其他配置文件都正確,我就不寫了。這樣就會出現 Java.lang.IllegalArgumentException:
Result Maps collection already contains value for XXX這個錯誤。
解決辦法是:刪除Mybatis.xml中的<mappers>標籤所有內容。因爲如果user-mapper.xml與namespace的接口在同一路徑下,就不需要在mybaits.xml中再進行配置了。
修改後的Mybatis.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 別名 -->
<typeAliases>
<typeAlias type="com.bmdc.dj.user.domain.User" alias="user"/>
</typeAliases>
</configuration>
我項目中壓根就沒有這些東西,問題沒解決
3、eclipse編譯了一份在bin目錄下,將bin目錄或者WEB-INF下class目錄清空即可
我把該清理的全部清理掉,並清理並構建項目,問題依然存在。
4、將頁面$(document).ready後ajax請求後臺的方法改爲async:false,就是異步爲false,結果不好用。
5、後來搜到這麼一條:(http://blog.csdn.net/dr_lf/article/details/48625867)
mybatis併發:
使用mybatis(使用mybatis jar包:mybatis-3.0.4.jar,mybatis-spring-1.0.0.jar)時發現一個併發問題引起的異常,應用場景:頁面向服務端發送了三個請求, 同時請求一個方法,結果拋出異常:
mybatis的核心包只有一個mybatis-3.x.0.jar,另外還有一些【可選】的依賴包(日誌、代理等所需要的),在下載的壓縮包中可以找到.
下載地址:https://github.com/mybatis/mybatis-3/releases