아이바티스-한구문에 insert,update같이 들어간경우 에러날때 해결방법
실제 동작시키니 에러가 떳다...
------------------------------------------------------------------------------------------
<insert id="abcinsert" parameterClass="abcDTO">
<![CDATA[
if not exists(select * from schedule_info_tbl where convert(datetime, scDate,120) = convert(datetime, #scDate#,120))
begin
insert into schedule_info_tbl($objName$,scDate,position)
values(#textVal#, convert(datetime, #scDate#,120), #position#)
end
else
begin
update schedule_info_tbl
set $objName$ = #textVal#,
position = #position#
where convert(datetime, scDate,120) = convert(datetime, #scDate#,120)
end
]]>
</insert>
------------------------------------------------------------------------------------------
요 <insert> 이걸로 쓰는데 에러가 났다...
----------에러메세지--------
com.ibatis.dao.client.DaoException: Failed to execute queryForObject - id [scheduleSave], parameterObject [schedule.dto.ScheduleDTO@2ac57c]. Cause: java.sql.SQLException: Insert statements cannot be executed as a query.
Caused by: java.sql.SQLException: Insert statements cannot be executed as a query.
봤더니 dao쪽에 아무생각없이queryForObject를 썼는데 이게 다른건 상관없지만
xml에 <insert>로 선언하고 내용에 위에처럼 insert도 있고update도 있으면 에러가 나온다.
그래서 dao에 queryForObject대신
this.insert("abcInsert",abcDTO); <== 이렇게 바꾸니까 된다ㅎㅎㅎ