작성
·
97
0
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="hello.sailing_jsp.v2.dao.MenuDaoV2">
<!--조회-->
<select id="doList" resultType="hello.sailing_jsp.v2.vo.Coffee_menu">
select no,
coffee,
kind,
price,
date_format(reg_day,'%Y,%m,%d') as reg_day,
date_format(mod_day,'%y,%m,%d') as mod_day
from coffee_menu
</select>
<!--검색에 의한 쿼리-->
<select id="doSearch" resultType="hello.sailing_jsp.v2.vo.Coffee_menu">
select no,
coffee,
kind,
price,
date_format(reg_day,'%Y,%m,%d')as reg_day,
date_format(mod_day,'%y,%m,%d')as mod_day
from coffee_menu
where 1=1
and reg_day >= date_format( #{strStartDate}, '%Y,%m,%d')
and reg_day < date_add(date_format(#{strEndDate}, '%Y,%m,%d'), interval +1 day)
<if test="strCoffee != 'ALL'">
and coffee like concat('%',#{strCoffee},'%')
</if>
<if test="strKind != 'ALL'">
and kind = #{strKind}
</if>
</select>
<!--메뉴조회-->
<select id="doListOne" resultType="java.util.Map">
select no,
coffee,
kind,
price,
date_format(reg_day,'%Y,%m,%d')as reg_day,
date_format(mod_day,'%y,%m,%d')as mod_day
from coffee_menu
where no = cast(#{strNo} as Integer)
</select>
<insert id="doInsert">
Insert Into coffee_menu(coffee,kind,price)
values(#{coffee},#{kind},cast(#{price} as Integer))
</insert>
<update id="doUpdate">
update coffee_menu set
coffee = #{coffee},
kind = #{kind},
price = cast(#{price} as Integer)
where no = cast(#{no} as Integer)
</update>
<delete id="doDelete">
Delete from coffee_menu where no = cast(#{strNo} as Integer)
</delete>
<!--메뉴 가격 수정 입력-->
<update id="doUpdatePrice">
update coffee_menu set
price = cast(#{strPrice} as integer)
where no = cast(#{strNo} as integer)
</update>
<!--가격 로그 입력-->
<insert id="doInsertLog">
insert into coffee_menu_log(coffee_no, price)
values( #{strNo}, cast(#{strPrice} as integer) )
</insert>
<!--메뉴 가격 수정 원쿼리로 처리-->
<update id="doUpdatePriceOne">
update coffee_menu set
price = cast(#{strPrice} as integer)
<where>
<foreach item="item" index="index" collection="chkList" open="no in (" separator="," close=")" nullable="true">
#{item}
</foreach>
</where>
</update>
<!--가격 로그 입력 원쿼리-->
<insert id="doInsertLogOne">
insert into coffee_menu_log(coffee_no, price)
<foreach item="item" index="index" collection="chkList" separator="union all" nullable="true">
select #{item}, cast(#{strPrice} as integer) from dual
</foreach>
</insert>
<!--boot 로그 입력-->
<insert id="doBootLog">
insert into boot_log (class)
values( #{strClass} )
</insert>
</mapper>
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bootlog': Unsatisfied dependency expressed through field 'menuDaoV2'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'menuDaoV2' defined in file [C:\Users\mins1\OneDrive\Desktop\Sailing_jsp\build\classes\java\main\com\boot\sailing_jsp\v2\dao\MenuDaoV2.class]: Cannot resolve reference to bean 'sqlSessionTemplate' while setting bean property 'sqlSessionTemplate'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionTemplate' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionTemplate' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is java.io.IOException: Failed to parse mapping resource: 'file [C:\Users\mins1\OneDrive\Desktop\Sailing_jsp\build\resources\main\sqlmapper\v2\CoffeeMenuV2.xml]'
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. mins199600님.
현재 발생하는 오류는 MyBatis의 Mapper XML 파일(CoffeeMenuV2.xml
)에서 문제가 발생하여 SqlSessionFactory
생성에 실패한 것으로 보입니다. 주로 XML 파일의 경로 오류나 XML 문법 문제로 인해 발생합니다. 아래에서 해결 방법을 제안드립니다.
XML 경로 확인:
CoffeeMenuV2.xml
이 잘못된 경로에 있거나, 경로가 올바르지 않을 가능성이 큽니다. 이 파일이 src/main/resources/sqlmapper/v2
경로에 정확히 위치해 있는지 확인하세요.XML 파싱 오류:
<if>
나 <foreach>
등의 태그가 제대로 닫혀 있는지, 또는 특수 문자가 제대로 인코딩되어 있는지 확인하시기 바랍니다.Mapper 등록 여부 확인:
MenuDaoV2
에 해당되는 Mapper가 Spring Boot에 의해 제대로 등록되어 있는지 확인해야 합니다. @MapperScan("com.boot.sailing_jsp.v2.dao")
어노테이션이 SpringBootApplication
클래스에 적용되어 있는지 확인합니다.Logback 설정 확인:
이 문제와 유사한 다른 사례들이 포함된 질문을 참조하시면서 문제를 해결하시기를 권합니다. 관련된 질문은 다음과 같습니다:
근본적인 문제 해결 방법을 위해 위의 체크리스트를 따라가며 문제를 해결해보세요. 이해가 어려우시다면 추가적인 정보나 오류 로그를 제공해주시면 더 세부적으로 도와드리겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
오! 감사합니다!! 경로문제였어요!!