Mybatis

jooog·2021년 11월 10일
0

Mybatis

목록 보기
1/2

테이블로 생성할 company 객체를 생성한다

import lombok.Data;

@Data
public class Company {

    private int id;
    private String name;
    private String address;

}

lombok을 사용하면 getter, setter 코드를 작성하지 않아도 된다.

Mapper interface

import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CompanyMapper {

    //입력된 데이터의 개수 반환
    @Insert("INSERT INTO company(company_name, company_address) VALUES(#{company.name}, #{company.address})")
    @Options(useGeneratedKeys = true, keyProperty ="id")
    int insert(@Param("company") Company company);


    @Select("SELECT * FROM company")
    @Results(id="CompanyMap", value={
            @Result(property="name", column="company_name"),
            @Result(property="address", column="company_address")
    })
    List<Company> getAll();

    //id로 데이터 가져오기
    @Select("SELECT * FROM company WHERE id=#{id}")
    @ResultMap("CompanyMap")
    Company getById(@Param("id")int id);
}

데이터 저장 쿼리

 @Insert("INSERT INTO company(company_name, company_address) VALUES(#{company.name}, #{company.address})")
 @Options(useGeneratedKeys = true, keyProperty ="id" 설정을 하면 )
 int insert(@Param("company") Company company);

@Options 어노테이션

@Options를 사용해서 useGeneratedKeys = true , keyProperty ="id" 설정을 하면 데이터를 insert 할 때 생성된 key value를 id로 지정할 수 있다.

동일한 쿼리 설정을 반복적으로 사용해야 할 때

@Select("SELECT * FROM company")
    @Results(id="CompanyMap", value={
            @Result(property="name", column="company_name"),
            @Result(property="address", column="company_address")
    })
    List<Company> getAll();

    //id로 데이터 가져오기
    @Select("SELECT * FROM company WHERE id=#{id}")
    @ResultMap("CompanyMap")
    Company getById(@Param("id")int id);

위의 코드의 경우 table column을 따로 mapping 해주는 설정을 하기 위해 @Results 어노테이션을 사용했다.

동일한 쿼리 설정을 반복적으로 사용해야 할경우에는 id와 value로 값을 설정해서 @ResultMap(id) 형태로 사용하면 편리하다

CompanyController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/company")
public class CompanyController {

    @Autowired
    private CompanyMapper companyMapper;

    @PostMapping("")
    public Company post(@RequestBody Company company){
        companyMapper.insert(company);
        return company;
        //company 객체 반환
    }

    @GetMapping("")
    public List<Company> getAll(){
        return companyMapper.getAll();
    }

    @GetMapping("/{id}")
    public Company getById(@PathVariable("id") int id){
        return companyMapper.getById(id);
    }

0개의 댓글