2

I don't know what is wrong. Something is bad with mapper but everything looks good.

File UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.javacodegeeks.snippets.enterprise.UserMapper">
    <select id="addUser" parameterType="int" resultType="com.javacodegeeks.snippets.enterprise.User">
        insert into  * from users where id = #{id}
    </select>
    <select id="getUser" parameterType="int" resultType="com.javacodegeeks.snippets.enterprise.User">
        select * from com.javacodegeeks.snippets.enterprise.User where id = #{id}
    </select>  
</mapper>

I get this Error:

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 70; Document root element "mapper", must match DOCTYPE root "null".
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:51)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:35)
at Main.do1(Main.java:105)
at Main.main(Main.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 70; Document root element "mapper", must match DOCTYPE root "null".
2
  • Can you show full mapper file? Commented May 26, 2014 at 19:11
  • link Commented May 28, 2014 at 10:11

1 Answer 1

1

You can use following doc type. However I find some discrepancy in the code you have copied. Are you sure of INSERT and SELECT statements. I hope its copy mistake

<?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.javacodegeeks.snippets.enterprise.UserMapper">

    <select id="addUser" parameterType="int" resultType="com.javacodegeeks.snippets.enterprise.User">
        insert into  * from users where id = #{id}
    </select>

    <select id="getUser" parameterType="int" resultType="com.javacodegeeks.snippets.enterprise.User">
        select * from com.javacodegeeks.snippets.enterprise.User where id = #{id}
    </select>

</mapper>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.