2011-04-08 2 views
3

iBatis를 사용하여 연락처 정보 양식에서 사용자가 보내는 일부 데이터를 삽입하려고합니다.데이터를 삽입 할 때 SqlMapException이 발생하는 이유는 무엇입니까?

Liferay/Spring MVC/iBatis/MySQL 설치 프로그램을 사용하고 있지만이 문제는 iBatis 구성으로 인해 발생한다고 생각합니다. 내가 데이터를 삽입 할 때마다 나는 로그에 예외를 참조하십시오 ibator은 SQL지도 를 생성

com.ibatis.sqlmap.client.SqlMapException: There is no statement named contactus.ibatorgenerated_insert in this SqlMap. at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:231) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:367) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:58) 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
<sqlMapConfig> 
<sqlMap namespace="contactus"> 
     <insert id="ibatorgenerated_insert" parameterClass="contactUs.dao.ContactUs"> 
      <!-- 
      WARNING - This element is automatically generated by Apache iBATIS ibator, do not modify. 
      This element was generated on Thu Apr 07 15:17:57 BST 2011. 
      --> 
      insert into contactus (email_address, first_name, last_name, company, timestamp, 
      status, message) 
      values (#emailAddress:VARCHAR#, #firstName:VARCHAR#, #lastName:VARCHAR#, #company:VARCHAR#, 
      #timestamp:TIMESTAMP#, #status:VARCHAR#, #message:LONGVARCHAR#) 
      <selectKey resultClass="java.lang.Integer" keyProperty="contactusId"> 
       SELECT LAST_INSERT_ID() 
      </selectKey> 
     </insert> 
    </sqlMap> 
</sqlMapConfig> 

네임 스페이스 "contact_us"로 ID가 "ibatorgenerated_insert"을 삽입 쿼리를 포함 않는다 iBatis가 XML 파일에서 구문을 찾지 못하게 할 수있는 원인은 무엇입니까? 다른 종류의 오류를보고하지 않기 때문에 파일을 찾는 것으로 가정합니다.

답변

4

난 당신이 아래로 SqlMapConfig.xml에 삽입 문이 포함 된 contactus.xml 파일을 지정했는지 희망

<sqlMapConfig> 
    <properties resource="Connection.properties"/> 
    <!-- Configure a built-in transaction manager. If you're using an  app server, you probably want to use its transaction manager  and a managed datasource --> 
<settings cacheModelsEnabled="false" enhancementEnabled="true" 
    lazyLoadingEnabled="true" maxRequests="32" maxSessions="1" 
    useStatementNamespaces="false" /> 
    <transactionManager type="JDBC"> 
    <dataSource type="JNDI"> 
     <property name="DataSource" value="${connection.datasource}"/> 
    </dataSource> 
    </transactionManager> 
<!-- List the SQL Map XML files. They can be loaded from the  classpath, as they are here (com.domain.data...) --> 
    <sqlMap resource="contactus.xml"/> 
</sqlMapConfig> 

네임 스페이스없이 호출합니다. 아래 내용 중 하나

sqlMapper.insert("ibatorgenerated_insert",params); 
+0

예 XML 파일에 이전에 ''이 있었으며 동일한 파일에 구성을 추가 할 수 있다고 생각했습니다. 이제는 데이터를 삽입하려고 할 때'NullPointerException'을 얻지 만 새로운 문제처럼 보입니다 - 그래서 나는 새로운 질문을 만들 것입니다! :피 –

1

를 추가해보십시오 당신의 <sqlMapConfig> 요소에 다음

<settings useStatementNamespaces="true"/> 
관련 문제