Languages | Frameworks/Spring

    [Java] 순서대로 저장, 출력하는 HashMap - LinkedHashMap

    HashMap은 Map 인터페이스를 구현한 Map 컬렉션이다. 인터페이스를 상속하기 때문에 Map의 특성을 그대로 사용할 수 있다. Key-Value쌍의 데이터로 저장되는 구조를 갖고 있고 이 데이터는 모두 객체이다. 값은 중복될 수 있지만 key값은 고유한 값을 가져야 한다. 만약 이미 존재하는 key값과 동일한 key값을 put하게 되면 새로운 key값으로 교체된다. 우리는 자주 HashMap을 사용한다. key-value 쌍의 데이터를 표현하기 위해서이기도 하고, 자연스럽게 중복을 원하지 않는 key-value 알고리즘을 사용해야 할 때 주로 사용한다. LinkedHashMap ? HashMap은 위와 같은 특징을 갖고 있다. 하지만 한 가지 더 추가하자면 아래 사진과 같이 데이터 출력에 있어 순서..

    [SpringBoot] RestApi 구현하기 위한 List<Map> 사용

    위 사진처럼 parameter와 resultCode, resultMsg등을 위에 빼놓고, 디비 결과값을 리스트로 보여주고 싶을 때 List과 Map을 사용하면된다. @RequestMapping("/rest/") public class vueController { @Autowired private VueService service; @GetMapping("testDB") public List vueTestDB() { List listmap = new ArrayList(); Map map = new HashMap(); Map map2 = new HashMap(); map.put("resultCode", 200); map.put("resultMsg", "success"); map.put("Param1", "t..

    [SpringBoot] mybatis resultType HashMap Null값 받기

    Mybatis에서 resultType = hashmap 인경우, Table data값이 null이면 key, value가 생성되지 않는다.(select를 안함) 그럴땐 mybatis-config.xml파일에서 를 추가해주면 된다. 추가로 mybatis-config.xml 파일이 없다면 resources에 생성해주고 application.properties에서 mybatis.config-location=classpath:mybatis-config.xml의 위치(mybatsMapper/mybatisconfig.xml)을 추가해주면됨

    Validator분리 - @InitBinder, @Validated

    @InitBinder를 사용한 검증 @InitBinder public void init(WebDataBinder dataBinder) { log.info("init binder {}", dataBinder); dataBinder.addValidators(itemValidator); } 이렇게 'WebDataBinder'에 검증기를 추가하면 해당 컨트롤러에서는 검증기를 자동으로 적용할 수 있다. '@InitBinder' -> 해당 컨트롤러에만 영향을 준다. 글로벌 설정은 별도로 해야함 이 후 해당 컨트롤러에서 '@Validated' 어노테이션을 붙여주면 됨 '@Validated'는 검증기를 실행하라는 어노테이션이다. 이 어노테이션이 붙으면 앞서 'WebDataBinder'에 등록한 검증기를 찾아서 실행한다..

    스프링이 직접 만든 오류 메시지 처리 - 타입 에러처리

    검증 오류 코드는 다음과 같이 2가지로 나눌 수 있다. 개발자가 직접 설정한 오류 코드 rejectValue() 를 직접 호출 스프링이 직접 검증 오류에 추가한 경우(주로 타입 정보가 맞지 않음) price 필드에 문자 "qqq"를 입력해보자. 로그를 확인해보면 BindingResult 에 FieldError 가 담겨있고, 다음과 같은 메시지 코드들이 생성된 것을 확인할 수 있다. codes[typeMismatch.item.price,typeMismatch.price,typeMismatch.java.lang.Integer,typ eMismatch] 다음과 같이 4가지 메시지 코드가 입력되어 있다. typeMismatch.item.price typeMismatch.price typeMismatch.java..