컨트롤러 update메소드 추가
update 대상 id = > @Path
update data = > @RequestBody (JSON)
@Path, @RequestBody 어노테이션을 통해 파라미터 체크
서비스, dao 인터페이스에 메소드 등록
mapper.xml update 쿼리 등록
package com.example.demo.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.dto.Member;
import com.example.demo.service.MembersService;
@RestController
public class MembersController {
@Autowired
private MembersService service;
...
@PutMapping(path="/members/{id}")
public Member updateMember(@PathVariable Integer id, @RequestBody Member member) {
return service.updateMember(id, member);
}
}
package com.example.demo.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.example.demo.dto.Member;
@Repository
public interface MembersDAO {
List<Member> getAllMembers();
Member getMember(Integer id);
void insertMember(Member member);
Integer updateMember(@Param("id") Integer id, @Param("member") Member member);
}
package com.example.demo.dto;
public class Member {
private Integer id;
private String name;
private Integer age;
private String dept;
public Member() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Member [id=" + id + ", name=" + name + ", age=" + age + ", dept=" + dept + "]";
}
}
package com.example.demo.service;
import java.util.List;
import com.example.demo.dto.Member;
public interface MembersService {
List<Member> getAllMembers();
Member getMember(Integer id);
void insertMember(Member member);
Member updateMember(Integer id, Member member);
}
package com.example.demo.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.dao.MembersDAO;
import com.example.demo.dto.Member;
import com.example.demo.service.MembersService;
@Service
public class MembersServiceImpl implements MembersService{
@Autowired
private MembersDAO dao;
...
@Override
public Member updateMember(Integer id, Member member) {
Member updateMember = new Member();
if(dao.updateMember(id, member) == 1) { //update 반환값은 update 성공 row 수
updateMember.setId(id);
updateMember.setName(member.getName());
updateMember.setAge(member.getAge());
updateMember.setDept(member.getDept());
}
return updateMember;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.dao.MembersDAO">
...
<!-- update 성공 시 성공한 레코드 수를 반환 -->
<update id="updateMember">
UPDATE members SET name = #{member.name}, age = #{member.age}, dept = #{member.dept} WHERE id = #{id}
</update>
</mapper>