개발 공부 기록/02. Spring Boot

Mybatis 기본적인 사용법 정리

박세류 2024. 1. 25. 16:09

Mybatis 사용법

보통 mybatis는 2가지 사용법이 있다고 한다.

 

1. Java 코드에 SQL을 작성하기

2. XML 안에 SQL을 작성하기

 

요즘 빌드파일도 xml이 아닌 kotlin으로 지원하는 형국이니 2번은 차차 알아보고 일단 1번부터 알아보도록 하겠다.

 

1. 테이블 생성

위와 같은 테이블을 만들었다. 이름은 computer라고 하자.

 

2. Mapper 인터페이스 생성 

repository 하위에 computer 패키지를 생성해주고, 

@Mapper
public interface ComputerMapper {
    //CRUD 작성
    @Select("SELECT * FROM computer")
    List<Computer> findAll();

}

위와같이 작성해준다.

 

 

3. Computer 클래스 작성 및 컨트롤러 작성

Computer 클래스 작성 

public class Computer {
    private Long id;
    private String name;
    private int price;
    
    public Computer(){}

    public Computer(String name, int price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }
}

JPA와 다르게 @Entity 어노테이션이 필요없다. JPA를 안쓰니까...

 

ComputerController 작성

@RestController
public class ComputerController {
    private final ComputerMapper computerMapper;

    public ComputerController(ComputerMapper computerMapper) {
        this.computerMapper = computerMapper;
    }

    @GetMapping("/mybatis")
    public void myBatisGetTest() {
//        List<Computer> computerList = computerMapper.findAll();
        List<Computer> computerList = computerMapper.findByName("늑대와여우");
        for (Computer computer : computerList) {
            System.out.println(computer.getName());
            System.out.println(computer.getPrice());
        }
    }

    @PostMapping("/mybatis")
    public void myBatisSaveTest(@RequestBody Computer computer){
        System.out.println(computer.toString());
        computerMapper.saveComputerInfo(computer.getName(), computer.getPrice());
    }

    @PutMapping("/mybatis")
    public void myBatisUpdateTest(@RequestBody ComputerUpdate computerUpdateDto){
        Computer com = computerMapper.findByName(computerUpdateDto.getOlderName()).get(0);
        computerMapper.updateComputerInfo(computerUpdateDto.getNewName(), com.getId());
    }

    @DeleteMapping("/mybatis")
    public void myBatisDeleteTest(@RequestParam Long id){
        computerMapper.deleteComputerInfo(id);
    }

}

 

이후 테스트 시, 잘 작동함을 확인 할 수 있다.

 

4. 기본 CRUD 및 WHERE 조건도 생성해보자.

Mapper에 메소드를 추가해준다.

@Mapper
public interface ComputerMapper {
    //CRUD 작성
    @Select("SELECT * FROM computer")
    List<Computer> findAll();

    @Select("SELECT * FROM computer WHERE name = #{name}")
    List<Computer> findByName(@Param("name") String name);

    @Update("INSERT INTO computer (name, price) values (#{name}, #{price}) ")
    void saveComputerInfo(@Param("name") String name, @Param("price") int price);

    @Update("UPDATE computer SET name = #{name} WHERE id = ${id}")
    void updateComputerInfo(@Param("name") String name, @Param("id") long id);

    @Delete("DELETE FROM computer WHERE id = ${id}")
    void deleteComputerInfo(@Param("id") Long id);


}

 

이런식으로 기본 CRUD를 할 수 있다.

반응형