IT/development

[mybatis] mybatis 배열 저장(feat. foreach)

알 수 없는 사용자 2022. 11. 21. 06:53
반응형

목차

     

    위와 같이 insert를 1개 이상 하는 로직을 만들게 되었고 미래의 내가 보기 위해 기록한다. 😄

    클라이언트에서 배열로 값을 받아서 DB에 저장하는 기능이 필요했다.

    참고로 mysql과 Oracle은 문법이 다르다.

    Oracle은 아직 안해봐서 그건 나중에 알아보겠다.

     

    Controller

    @RequestParam(value = "변수명[]") String[] avengers 이런식으로 받음

    @PostMapping("")
    public ResponseEntity<?> createArray(
    @RequestParam(value = "avengers[]") String[] avengers
    ) throws Exception{
    Service.insertAvengers(avengers);
    생략...

     

    Service

    public void insertAvengers(String[] avengers) throws Exception {
    		Mapper.insertAvengers(avengers);
    	}

     

    Mapper

    public void insertAvengers(String[] avengers);

     

    xml

    배열로 넘겼으면 반드시 collection을  "array"로 할 것

    <insert id="insertAvengers">
        INSERT INTO avengers
        (
            hero_name,
            reg_date
        )
        VALUES
        <foreach collection="array" item="item" separator=",">
        (
            #{item},
            NOW()
        )
        </foreach>
    </insert>

     

    반응형