03_트러블슈팅
이슈
axios
로 params
를 담아 보내는 과정에서 배열로 보낼때 400에러와 함께 파라미터가 이상하게 담겨서 전달된다.
- 코드
const dongCode=[1111017600,1111018000,1111018200...]
const params ={
dong: dongCode,
};
dongList(
params,
(response) =>{
commit("SET_DETAIL_HOUSE", response.data);
},
(error) => {
console.log(error);
}
);
// api는 axios 객체를 생성한 것
function dongList(params, success, fail) {
api.get(`/map/apt`, { params: params }).then(success).catch(fail);
}
- 400에러와 함께 발생하는 로그는 다음과 같다.
axios
로params
를 담아 보내는 과정에서 배열로 보낼때 400에러와 함께 파라미터가 이상하게 담겨서 전달된다.
const dongCode=[1111017600,1111018000,1111018200...]
const params ={
dong: dongCode,
};
dongList(
params,
(response) =>{
commit("SET_DETAIL_HOUSE", response.data);
},
(error) => {
console.log(error);
}
);
// api는 axios 객체를 생성한 것
function dongList(params, success, fail) {
api.get(`/map/apt`, { params: params }).then(success).catch(fail);
}
- 하나의 배열로 묶여서 넘겨졌으면 했는데 파라미터 부분이 엉망진창이 되었다.
해결
params
를,
로 구분하여 리스트형태로 전달하기 위해join
을 사용했다.
const params ={
dong: dongCode.join(","),
};
- 파라미터가 깔끔하게 전달되는것을 볼 수 있다.
이슈
리스트로 전달받은 파라미터를 활용하여 select
문에 적용하니 리스트값이 아무것도 없을 때 mybatis
내부 에러가 발생한다.
- 코드
<select id="getAptInDong" resultType="houseInfoDto">
select *
from houseinfo
where dongCode in
<foreach collection="list" item="dong" open="(" separator="," close=")">
#{dong}
</foreach>
</select>
-
에러와 함께 발생하는 로그는 다음과 같다.
check the manual that corresponds to your MySQL server version for the right syntax to use near '~~~~'
-
MySQL 구문이 틀렸다고 하는건데 찾아보니 보통 where
절을 따옴표로 묶지 않아서 생기는 문제라고 한다.
리스트로 전달받은 파라미터를 활용하여 select
문에 적용하니 리스트값이 아무것도 없을 때 mybatis
내부 에러가 발생한다.
<select id="getAptInDong" resultType="houseInfoDto">
select *
from houseinfo
where dongCode in
<foreach collection="list" item="dong" open="(" separator="," close=")">
#{dong}
</foreach>
</select>
에러와 함께 발생하는 로그는 다음과 같다.
check the manual that corresponds to your MySQL server version for the right syntax to use near '~~~~'
MySQL 구문이 틀렸다고 하는건데 찾아보니 보통 where
절을 따옴표로 묶지 않아서 생기는 문제라고 한다.
해결
-
구문을
if
로 조건을 나눠준다. -
isEmpty()
함수를 통해 받아온list
가 비어있는지 확인해 준다.
<select id="getAptInDong" resultType="houseInfoDto">
select *
from houseinfo
where dongCode in
<if test="dong.isEmpty()">("")</if>
<if test="!dong.isEmpty()">
<foreach collection="list" item="dong" open="(" separator="," close=")">
#{dong}
</if>
</foreach>
</select>
Author And Source
이 문제에 관하여(03_트러블슈팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pang_e/03트러블슈팅저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)