Nos últimos dois dias, o projeto precisa integrar as três principais estruturas da primavera, Struts2 e Mybatis, mas esse erro sempre ocorre quando é lançado, o que me incomoda há muito tempo. As respostas que encontrei online não são o que eu quero. Hoje finalmente sei o motivo.
O usuário mapper.xml é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! namespace = "com.bmdc.dj.user.dao.userdao"> <resultado column = "senha"/> </resultado> <insert id = "add" parametertype = "user"> inserir nos usuários (user_id, login_name, real_name, senha) valores ( #{user_id}, #{login_name}, #{real_name}, #{})Onde o namespace é o caminho da interface.
Mybatis.xml é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 //" "http://mybatis.org/dtd/mybatis-3-config.dtddtddtddtddtdddtds> Type = "com.bmdc.dj.user.domain.user" alias = "user"/> </typeAliases> <mapper Resource = "com/bmdc/dj/user/dao/user-mapper.xml"/> </spperpers> </figuration>
Os outros arquivos de configuração estão corretos, então não os escreverei. Isso causará o erro java.lang.illegalargumentException: a coleção de mapas de resultado já contém valor para xxx.
A solução é: Exclua todo o conteúdo da tag <Mappers> em mybatis.xml. Porque se a interface entre o user-mapper.xml e o namespace estiverem no mesmo caminho, não há necessidade de configurá-lo em mybaits.xml.
O Mybatis.xml modificado é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 //" "http://mybatis.org/dtd/mybatis-3-config.dtddtddtddtddtdddtds> Type = "com.bmdc.dj.user.domain.user" alias = "user"/> </typeAliases> </figuration>
O exposto acima é a introdução do editor a como resolver mybatis-java.lang.illegalargumentException: Result Maps Collection já contém valor para X. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!