我正在尝试将 sql 语句添加到 java spring 中的映射器中,但是当我尝试时出现错误

I'm trying to add sql statements into mapper in java spring but gets an error when I try to

一开始以为是controller的问题,试着加上那些statements的ID,还是报错。有问题的代码在代码的中间。与上面的工作正常。

我不知道如何处理这个东西 :( 现在已经苦苦挣扎了几个小时。 任何帮助将非常感激。

<?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.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.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.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

您已经在映射器顶部用 id = "sample" 声明了 resultMap。在您的 select 语句中,您使用 resultType = "sample"。所以像这样改变你的 select 语句

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

或者,如果您想使用 resultType 而不是 resultMap,那么您需要确保已经创建了一个名为 sample 的 class。

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 添加类型别名标签 class.

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

此别名用于以下属性。

parameterType="sampleVO"

3。检查 "sampleVO.java".

的路径

没问题?接下来..

4.修改以下代码。输入 -> class

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

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