When I tried iBATIS 3, I've done like you naming my interface and my xml with 
the same name. Don't do that, iBATIS will throw an exception like yours.

You should name your interface UserMapper.java and your xml User.xml. Make sure 
your namespace in User.xml points to your UserMapper interface.
I beleive this is a bug.

Christian

________________________________
From: Erdem Budak [mailto:erdembu...@hotmail.com]
Sent: Friday, August 14, 2009 6:01 AM
To: user-java@ibatis.apache.org
Subject: RE: iBatis 3.x.x - documentation error ?

And what do think about the mapping class. Is something wrong with my code ?

________________________________
Date: Thu, 13 Aug 2009 21:34:47 -0600
Subject: Re: iBatis 3.x.x - documentation error ?
From: clinton.be...@gmail.com
To: user-java@ibatis.apache.org

corrected.

On Thu, Aug 13, 2009 at 9:22 AM, Clinton Begin <clinton.be...@gmail.com> wrote:
Yep, that's a typo.  Should be parameterType and resultType....

Clinton

2009/8/13 Erdem Budak <erdembu...@hotmail.com>

Hello

I trying to write a simple swing gui application using ibatis 3.x.x. I have a 
few problems doing it with the current documentation. I'll try to explain my 
problems.

1) The example code for mapper :

<select id="selectPerson" parameterClass="int" resultClass="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>

Well i can't seem to use parameterClass or resultClass. They are not defined in 
dtd nor in documentation. I don't know if using parameterType and resultType 
gives the same result.

2) mapping classes from xml :

I dont think it is enough documented. I tried to write a mapper class and could 
not manage to do it. What i tried to do is.

-a UserMapper interface which defines a selectUser function.

public interface UserMapper {

    public User selectUser(int id);

}

-a UserMapper.xml

<mapper namespace="com.erdm.ibatistest.UserMappe r">
    <select id="selectUser" parameterType="int" resultType="hashmap">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

-in my configuration.xml

<mappers>
    <mapper resource="com/erdm/ibatistest/UserMapper.xml" />
</mappers>

having the error

Exception in thread "AWT-EventQueue-0" 
org.apache.ibatis.exceptions.IbatisException:
### Error building SqlSession.
### The error may exist in com/erdm/ibatistest/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper 
Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. 
Cause: java.lang.IllegalArgumentException: Mapped Statements collection already 
contains value for com.erdm.ibatistest.UserMapper.selectUser
    at org.apache.ibatis.exceptions.ExceptionFactory.wrap 
Exception(ExceptionFactory.java:8)
    at 
org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:31)
    at 
org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:14)
    at com.erdm.ibatistest.MainJFrame.<init>(MainJFrame.java:164)
    at com.erdm.ibatistest.MainJFrame$1.run(MainJFrame.java:70)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.Eve ntDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper 
Configuration. Cause: java.lang.RuntimeException: Error parsing Mapper XML. 
Cause: java.lang.IllegalArgumentException: Mapped Statements collection already 
contains value for com.erdm.ibatistest.UserMapper.selectUser
    at 
org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:62)
    at 
org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:47)
    at 
org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:28)
    ... 11 more
Caused by: java.lang.RuntimeException: Error parsing Mapper XML. Cause: 
java.lang.IllegalArgumentException: Mapped Statements collection already 
contains value for com.erdm.ibatistest.UserMapper.se lectUser
    at 
org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:50)
    at 
org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:31)
    at 
org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.loadXmlResource(MapperAnnotationBuilder.java:50)
    at 
org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parse(MapperAnnotationBuilder.java:29)
    at 
org.apache.ibatis.binding.MapperRegistry.addMapper(MapperRegistry.java:42)
    at org.apache.ibatis.mapping.Configuration.addMapper(Configuration.java:309)
    at 
org.apache.ibatis.builder.xml.XMLMapperBuilder.bindMapperForNamespace(XMLMapperBuilder.java:227)
    at 
org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:32)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder. 
mapperElement(XMLConfigBuilder.java:221)
    at 
org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:60)
    ... 13 more
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection 
already contains value for com.erdm.ibatistest.UserMapper.selectUser
    at 
org.apache.ibatis.mapping.Configuration$StrictMap.put(Configuration.java:349)
    at 
org.apache.ibatis.mapping.Configuration.addMappedStatement(Configuration.java:289)
    at 
org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:213)
    at 
org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:59)
    at 
org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:185)
    at org.apache.ibatis.builder.xml.XMLMapper 
Builder.configurationElement(XMLMapperBuilder.java:48)
    ... 22 more

Can't seem to get the mapper class work (old fashion way is fine). I would be 
glad if you could help me further. Thanks in advance.


________________________________
check out the rest of the Windows Live(tm). More than mail-Windows Live(tm) 
goes way beyond your inbox. More than messages



________________________________
Share your memories online with anyone you want anyone you 
want.<http://www.microsoft.com/middleeast/windows/windowslive/products/photos-share.aspx?tab=1>

Reply via email to