2017-01-05 1 views
1

Сначала я думал, что это проблема контроллера и попытался добавить идентификатор этих операторов, но ошибки все же появляются. код с проблемой находится около середины кода. отлично работает с выше.Я пытаюсь добавить sql-операторы в mapper в java spring, но получает ошибку при попытке установить

Я не могу понять, как работать это дело :(боролись в течение нескольких часов в настоящее время. любая помощь будет очень ценна.

<?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="egovframework.example.sample.service.impl.SampleMapper"> 

    <resultMap id="sample" type="egovframework.example.sample.service.sampleVO"> 
     <result property="id" column="id"/> 
     <result property="name" column="name"/> 
     <result property="description" column="description"/> 
     <result property="useYn" column="use_yn"/> 
     <result property="regUser" column="reg_user"/> 
     <result property="regDate" column="regdate"/> 
     <result property="hit" column="hit"/> 
     <result property="orifile" column="orifile"/> 
     <result property="servfile" column="servfile"/> 
     <result property="email" column="email"/> 
     <result property="step" column="step"/> 
     <result property="depth" column="depth"/> 
     <result property="ref" column="ref"/> 
    </resultMap> 

    <insert id="insertSample" parameterType="sampleVO"> 
<!-- this is inserting without files --> 
      INSERT INTO SAMPLE 
       (ID 
        , NAME 
        , DESCRIPTION 
        , EMAIL 
        , REG_USER 
        , PASS 
        , IP 
        , REF) 
      VALUES (#{id} 
        , #{name} 
        , #{description} 
        , #{email} 
        , #{regUser} 
        , #{pass} 
        , #{ip} 
        , #{id}) 

    </insert> 


    <update id="hit" parameterType="sampleVO"> 
    update sample set hit = hit + 1 where id = #{id} 

    </update> 

    <update id="updateSample" parameterType="sampleVO"> 
      UPDATE SAMPLE 
      SET 
<!--   ID=#{id} --> 
<!--    , --> 
       NAME=#{name} 
       , DESCRIPTION=#{description} 
       , USE_YN=#{useYn} 
        WHERE ID=#{id} 

    </update> 

    <delete id="deleteSample" parameterType="sampleVO"> 
      DELETE FROM SAMPLE 
      WHERE ID=#{id} 

    </delete> 

    <select id="selectSample" resultMap="sample"> 

      SELECT 
       ID, NAME, DESCRIPTION, USE_YN, REG_USER, email 
      FROM SAMPLE 
      WHERE ID=#{id} 

    </select> 


<!-- <select id="selectSampleList" parameterType="searchVO" --> 
    <select id="selectSampleList" parameterType="sampleVO" 
    resultType="egovMap"> 
    select RNUM, ID, NAME, DESCRIPTION, USE_YN, REG_USER, REGDATE, HIT, IP, 
    REF, STEP, DEPTH FROM (SELECT A.*, ROWNUM RNUM FROM(SELECT * FROM 
    SAMPLE ORDER BY REF DESC, STEP ASC)A) 

     <![CDATA[ 
     WHERE RNUM >= (#{firstIndex}+1) AND RNUM <= #{lastIndex} 
     ]]> 
     <if test="searchKeyword != null and searchKeyword != ''"> 
      <choose> 
       <when test="searchCondition == 0"> 
        AND ID LIKE '%' || #{searchKeyword} || '%' 
       </when> 
       <when test="searchCondition == 1"> 
        AND NAME LIKE '%' || #{searchKeyword} || '%' 
       </when> 
      </choose> 
     </if> 
<!--  i still dont understand why i have to put in +1.... >:(--> 
    </select> 

    <select id="selectSampleListTotCnt" parameterType="searchVO" resultType="int"> 
      SELECT COUNT(*) totcnt 
      FROM SAMPLE 
      WHERE 1=1 
      <if test="searchKeyword != null and searchKeyword != ''"> 
       <choose> 
        <when test="searchCondition == 0"> 
         AND ID LIKE '%' || #{searchKeyword} || '%' 
        </when> 
        <when test="searchCondition == 1"> 
         AND NAME LIKE '%' || #{searchKeyword} || '%' 
        </when> 
       </choose> 
      </if> 
    </select> 






<!--  


EVERYTHING WORKS FINE UNTIL I ADD SCRIPTS BELOW. 

--> 

    <select id="getReply" parameterType="sampleVO" resultType="sample"> 
<!--  first step: getting data you need to make reply from article ur gonna reply. --> 
     SELECT ID, REF, STEP, DEPTH FROM SAMPLE WHERE ID = #{id} 
    </select> 

    <update id="stepping" parameterType="sampleVO"> 
     UPDATE SAMPLE(STEP) VALUES STEP = STEP + 1 
     <![CDATA[ 
     WHERE STEP >= #{step} AND REF = #{ref} 
     ]]> 
    </update> 

    <insert id="addReply" parameterType="sampleVO"> 
<!--  and insert rply thingy --> 
     INSERT INTO 
     BOARD(ID, NAME, DESCRIPTION, PASS, REG_USER, REF, IP, EMAIL, STEP, DEPTH) 
     VALUES(GOVSEQ.NEXTVAL, #{name}, #{description}, #{pass}, #{regUser}, 
     #{ref}, #{ip},#{email}, #{step}, #{depth})  
    </insert> 




</mapper> 

...AND THE ERROR: 

05, 2017 10:58:08 오전 org.apache.catalina.core.StandardContext listenerStart 
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleMapper' defined in file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\example\sample\service\impl\SampleMapper.class]: Cannot resolve reference to bean 'sqlSession' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\spring\context-mapper.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\sqlmap\example\mappers\EgovSample_Sample_SQL.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:307) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:633) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5003) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleMapper' defined in file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\example\sample\service\impl\SampleMapper.class]: Cannot resolve reference to bean 'sqlSession' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\spring\context-mapper.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\sqlmap\example\mappers\EgovSample_Sample_SQL.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:334) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1417) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1158) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:445) 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:419) 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:547) 
    at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:155) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:304) 
    ... 22 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\spring\context-mapper.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\sqlmap\example\mappers\EgovSample_Sample_SQL.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 
    ... 37 more 
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\eGovFrameDev-3.2.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\board\WEB-INF\classes\egovframework\sqlmap\example\mappers\EgovSample_Sample_SQL.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:466) 
    at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) 
    ... 44 more 
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120) 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92) 
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:464) 
    ... 47 more 
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:103) 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:264) 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:251) 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:243) 
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116) 
    ... 49 more 
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:117) 
    at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:130) 
    at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:101) 
    ... 53 more 
Caused by: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:190) 
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) 
    at org.apache.ibatis.io.Resources.classForName(Resources.java:256) 
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:113) 
    ... 55 more 
+0

сообщения об ошибках говорит класс отсутствует. java.lang.ClassNotFoundException: Не удается найти класс: egovframework.example.sample.service.sampleVO. Вы должны добавить класс в свой путь к классам (например, добавить зависимость в свой pom.xml). – jaysee

+0

странной частью является то, что у меня нет этой ошибки класса, когда у меня есть последние 3 части. и другие заявления без проблем все используют один и тот же класс, поэтому не должно быть никаких проблем с его чтением. и, конечно, я проверил, не было ли у меня отсутствующих, что не было – MrSolid51

ответ

2

Ваш уже объявил resultMap с id = "sample" в верхней части mapper. В вашем заявлении на выбор вы используете resultType = "sample". Поэтому измените свой оператор выбора следующим образом:

<select id="getReply" parameterType="sampleVO" resultMap="sample"> 

Или, если вы хотите использовать resultType вместо resultMap, то вам необходимо убедиться, что у вас есть класс под названием sample, уже создан или нет.

+0

d'oh shouldve проверено немного раньше. Просто нашел эту проблему и решил ее решить. Большое спасибо за ответ. , и в resultmap также была ошибка внутри (одна из букв не была заглавной). – MrSolid51

0

1. Прежде всего, проверьте свои журналы ошибок.

TypeException: Could not resolve type alias 'egovframework.example.sample.service.sampleVO'. 
Cause: java.lang.ClassNotFoundException: Cannot find class: egovframework.example.sample.service.sampleVO 

2. Добавить тип тег-псевдоним для класса sampleVO.

<mapper namespace="egovframework.example.sample.service.impl.SampleMapper"> 
    <typeAlias alias="sampleVO" type="egovframework.example.sample.service.sampleVO" /> 
    ... 
</mapper> 

Этот псевдоним используется в следующем свойстве.

parameterType="sampleVO" 

3. Проверьте путь "sampleVO.java".

Нет проблем? Далее ..

4. Измените следующий код. тип -> класс

<resultMap id="sample" type="egovframework.example.sample.service.sampleVO"> 

в

<resultMap id="sample" class="egovframework.example.sample.service.sampleVO"> 
+0

спасибо за совет. Я действительно боролся с этим журналом ошибок, так как я уже обозначил его в xml и не понял, почему он вышел (это была опечатка). – MrSolid51