테이블로 생성할 company 객체를 생성한다
import lombok.Data;
@Data
public class Company {
private int id;
private String name;
private String address;
}
lombok을 사용하면 getter, setter 코드를 작성하지 않아도 된다.
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를 사용해서 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) 형태로 사용하면 편리하다
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);
}