异常1:
The content of element type "sqlMapConfig" is incomplete, it must match "(properties?,settings?,typeAlias*,typeHandler*,transactionManager?,sqlMap+)+".
解析:
(1)The content of element type “sqlMapConfig” is incomplete---->SqlMapConfig.xml 不完整
(2)(properties?,settings?,resultObjectFactory?,typeAlias*,typeHandler*,transactionManager?,sqlMap+)+
此句话的意思就是properties,settings,resultObjectFactory,transactionManager标签可以出现0次或者1次,typeAlias,typeHandler标签可以出现0次或者多次,sqlMap标签至少出现1次。
解决方案:
从解析中我们可以看出,遇到上面的异常我们可以查看的SqlMapConfig.xml文件看我的配置文件中,是否少了以上必不可少的标签。
很容易我们可以看出,是少了sqlMap标签。
在sqlMapConfig.xml文件中增加
<sqlMap resource="com\ection\ibatis\Contact.xml"/>
异常2: Error. Could not set result class.
Exception in thread "main" com.ibatis.common.exception.NestedRuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMap/select'. Cause: com.ibatis.sqlmap.client.SqlMapException: Error. Could not set result class. Cause: java.lang.ClassNotFoundException: Contact
Caused by: java.lang.ClassNotFoundException: Contact
Caused by: com.ibatis.sqlmap.client.SqlMapException: Error. Could not set result class. Cause: java.lang.ClassNotFoundException: Contact
解析:Could not set result class.不能找到设置的resultClass文件
解决方案:
在Contact.xml文件中检查resultClass的路径是否正确。
此时Contact.xml中resultClass路径的配置方式有两种:
(1)第一种方式:
<sqlMap namespace="Contact">
<select id="getAll" resultClass="com.ection.ibatis.Contact">
select * from contact
</select>
</sqlMap>
(2)第二种方式:
<sqlMap namespace="Contact">
<!-- show all data of table -->
<resultMap class="com.ection.ibatis.Contact" id="Contact">
<result property="id"/>
<result property="firstName"/>
<result property="lastName"/>
<result property="email"/>
</resultMap>
<select id="getAll" resultMap="Contact">
select * from contact
</select>
</sqlMap>