처음에 ckEditor를 써서 내용을 뿌려줬을 때
이렇게 나와서 멘붕했었다.
원인은 두 가지, 에디터때문이거나 내용컬럼이 CLOB타입이어서 그런 거라고 생각해서 우선 에디터 관련한 에러를 미친 듯이 찾아봤다.
그러다가 ckEditor 대신 스마트에디터로 바꿔서 설정했는데 그래도 저 문제는 사라지지 않았다 (하..)
구글링으로 사람들이 올려주는 해결법들을 봤는데 대략적으로는 이해가 가는데 내 코드에 접목시키려니 헷갈려서 해결하지 못했다.
그래서 문제는 에디터가 아니라 CLOB타입을 map으로 받아왔을 때 생기는 문제였고 (이후에 해결을 못 해서 그냥 내용 컬럼만 따로 뽑아와서 적용시켜 봤더니 잘 나와서 이 문제라는 걸 알았다,,)
String으로 변환시켜주는 작업을 해야했다.
그게 매퍼xml에서 ResultMap을 이용하는 거였는데 구글링 했을 때는 나와 같은 코드를 가지고 작업한 사람이 없어서 이해를 못 하는 상황에서 응용하기가 힘들었다.
내가 쓴 코드는 두 테이블을 조인해서 뷰로 만든 데이터를 where no으로 조건을 줘서 조회하는거였다.
결국 강사님께 여쭤보았는데 강사님과 또 다른 수강생분이 알려주셔서 그걸 참조했더니 잘 나온다,,
<resultMap type="HashMap" id="detailMap">
<result property="suggBoardNo" column="SUGG_BOARD_NO" />
<result property="suggCtgName" column="SUGG_CTG_NAME" />
<result property="suggTitle" column="SUGG_TITLE" />
<result property="suggContent" column="SUGG_CONTENT" jdbcType="CLOB" javaType="java.lang.String" />
<result property="suggRegdate" column="SUGG_REGDATE" />
<result property="memberNo" column="MEMBER_NO" />
<result property="aptNo" column="APT_NO" />
</resultMap>
내가 헷갈렸던건 result의 property와 column값이 어떻게 다른가였는데 적용 후에 이해한 바로는 column은 데이터 컬럼명을 적어주고 property에는 사용할 변수명, 애칭이라서 적용한 값에 맞게 뷰페이지에서도
map['suggBoardNo']
이런 식으로 맞춰줘야한다는거다! 이해 못하고 적용시킬 때는 그냥 둘 다 컬럼명으로 맞춰줬는데 다른 수강생분이 property에 대해 설명해주셔서 그렇게 해보니 잘 나와서 또 하나 배웠다!
resultMap type은 hashmap으로 맞춰줬는데 디폴트로 애칭이 설정되어 있어서 원래는 HashMap이지만 hashmap으로도 가능하다.
그리고 또 헷갈렸던 게 조인을 써서 뷰로 만든 테이블은 결과값이 한 테이블에만 있는 게 아니라서 resultType을 map이나 hashmap으로 받아줘야하는데 resultMap을 쓰면 resultType을 쓰면 안 된다고 해서 이해가 가지 않았다.
근데 지금 이해한 거로는 resultMap에 type을 map/hashmap으로 맞춰주고 select에서 그 resultMap을 가져오므로 거기 있는 type도 같이 가져와서 따로 type을 적어주지 않아도 된다.
=> 두 테이블을 조인한 view를 where 조건 no으로 조회하고 싶을 때
=> 컬럼 타입이 CLOB여서 map으로 했을 때 에러가 난다
=> CLOB타입을 바꿔주기 위해 매퍼xml에서 resultMap을 설정해줘야한다
=> resultMap id는 매핑구문에서 결과 매핑을 사용할 때 구분하기 위한 아이디이며, type은 결과 매핑을 적용하는 대상 객체 타입이다. map이나 자바모델클래스(vo)를 지정해주면 된다. 여기서는 map Or hashmap 적용!
=> result property는 사용할 변수명, column은 컬럼명을 적어준다
=> map으로 DAO,Service 작성 후 컨트롤러를 작성해준다
=> 뷰페이지에서 map['프로퍼티명'] 으로 불러온다
거진 이틀을 여기에 매달렸는데 그래도 잘 적용시켜서 정말 뿌듯하다!
여기에 글을 남기면서 스스로 이해시킬겸 정리를 남겨본다.
지금의 모든 괴로움조차도 지나고보면 다 나의 능력이 된다!!
잊지 말자! 화이팅!!