Сначала я думал, что это проблема контроллера и попытался добавить идентификатор этих операторов, но ошибки все же появляются. код с проблемой находится около середины кода. отлично работает с выше.Я пытаюсь добавить 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
сообщения об ошибках говорит класс отсутствует. java.lang.ClassNotFoundException: Не удается найти класс: egovframework.example.sample.service.sampleVO. Вы должны добавить класс в свой путь к классам (например, добавить зависимость в свой pom.xml). – jaysee
странной частью является то, что у меня нет этой ошибки класса, когда у меня есть последние 3 части. и другие заявления без проблем все используют один и тот же класс, поэтому не должно быть никаких проблем с его чтением. и, конечно, я проверил, не было ли у меня отсутствующих, что не было –
MrSolid51