0922 | lombok @Builder / repository mapper.xml설정 / 값 유지한 페이지를 리턴하기
✅ @Builder 이용하기
@Builder는 원래 생성자에 붙여쓰는것 ▶ 생성자를 붙이고 나서 또 builder 어노테이션을 붙인 후 객체를 생성하는데, 어차피 builder가 다 생성해주므로 그냥 클래스에 붙이게 됨.
대신 클래스에 붙일땐 꼭 @AllRequiredConstructor 태그 붙이기!
✅ MyBatis의 설정값 (Mapper.xml) 연결하기
#️⃣ column 읽어오기
: 데이터베이스에서는 변수명을 setting_like 이렇게 하는데 반해, 자바에서는 카멜표기법 (settingLike) 을 사용한다.
: mapper.xml에서 alias를 설정하면 일치시킬 수 있지만, 더 편리하도록 만들기 위해 application.properties에 mybatis.configuration.map-underscore-to-camel-case: true를 추가한다.
<!-- 기존에 MenuRepositoryMapper.xml에 설정해놓았었던 변수 mapper값.을 없앤다! -->
<resultMap id="menuMap" type="Menu">
<result property="korName" column="kor_name" />
<result property="engName" column="eng_name" />
<result property="regDate" column="reg_date" />
<result property="memberId" column="member_id" />
</resultMap>
mybatis.configuration.map-underscore-to-camel-case: true --> camel-case 적용
#mybatis.mapper-locations=mapper/MenuRepositoryMapper.xml
mybatis.mapper-locations=mapper/*Mapper.xml ---> Mapper로 끝나는 xml을 모두 인식할 수 있도록 세팅
👉 application.properties에 추가된 세팅
#️⃣ 패키지명 정리
👉 package의 alias를 모두 한군데에 모아서 적용시킬 수 있다.
👉 이때 interface MenuRepository에서 문제없이 DAO를 실행시킬 수 있으나, 메서드 위에 어노테이션(+SQL)이 붙으므로써 SQL이 길어질시, 기존의 인터페이스 메소드가 묻혀버릴 수 있다는 단점이 있다. 그래서 @select를 없애고 다른곳에서 읽혀주려 하면, application.properties의 alias-package에서 Repository주소가 읽히지 않게 됨..?
👉 부트를 통해 편하게 설정할 수 있긴 하지만 가독성을 높이고 깔끔하게 적용시키기 위해 xml파일과 나눠서 설정함!
▼ 참고블로그
[Spring Boot] 10. mybatis camelCase 적용
안녕하세요. 예전 글에서 DB로 부터 Data를 가져와서 브라우저화면에서 표출하는 test를 했었습니다. 2019/11/10 - [SpringBoot] - [Spring Boot] 05. MyBatis Basic Full Test [Spring Boot] 05. MyBatis Basic Full Test 이번에는
ayoteralab.tistory.com
✅ 페이지 입력값 저장하기
: 사용자가 선택하고 제출하는 형태의 화면은 폼태그를 사용한다
<form id="order">
<fieldset>
<legend>사이즈</legend>
<!-- name을 동일하게 설정하면 라디오버튼이 같은 그룹으로 묶인다 -->
<label><input type="radio" name="size" value="1">small</label>
<label><input type="radio" name="size" value="2">Large</label>
</fieldset>
<fieldset>
<legend>온도</legend>
<label><input type="radio" name="temp" value="1">HOT</label>
<label><input type="radio" name="temp" value="2">ICED</label>
</fieldset>
<div>
<fieldset>
<legend>수량</legend>
<input type="submit" value="1" name="minus">
<span>1</span>
<input type="submit" value="1" name="plus">
<span>4500원</span>
</fieldset>
<!-- 서버에서는 담기와 주문하기를 나눠서 submit을 인식할 수 있어야 한다 -->
<div>
<input type="submit" value="담기" name="order">
<input type="submit" value="주문하기" name="order">
</div>
</div>
</form>
👉 사용자가 수량변경을 해서 수정된 화면이 뜨는 것 == 서버에서 페이지를 새로 만들어와서 받는것. 즉 상태값이 저장되어야 한다!
- 요청을 떠올릴떄는 무조건 a나 submit인데 상태값을 보내기위해선 submit
- a는 폼에 입력된 내용들이 전달되지 않는다(혹은 a의 링크에 직접 써줘야 가능)
- 버튼태그는 img형태를 갖는 submit버튼일때만 사용한다