一:项目报错:
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