<!-- Member 정보 update -->
<update id="updateMember" parameterType="member">
update tb_member set
name = #{name}
where id = #{id}
</update>
<!-- Member 정보 delete -->
<delete id="deleteMember" parameterType="string">
delete from tb_member
where id = #{id}
</delete>
매퍼 파일에 update와 delete 구문을 추가한다.
parameterType은 별도로 alias를 지정해주지 않으면 패키지를 포함한 클래스 이름을 적으면 되고
mybatis-config.xml 설정파일에 다음과 같이 alias를 설정하여 축약형으로 사용할 수 있다.
<typeAliases>
<typeAlias type="Member" alias="member" />
</typeAliases>
public int updateMember(Member member);
public int deleteMember(String id);
매퍼 파일과 매칭할 인터페이스의 추상 메소드를 추가한다.
리턴타입을 int로 설정한 이유는 insert, update, delete와 같은 DML은 쿼리 실행 후 실제 DB에서 작업된 Row의 수를 리턴해 준다. 따라서 별도로 매퍼 파일에서 resultType을 지정하지 않아도 되고 리턴된 숫자를 보고 DML이 잘 수행 되었는지 확인하는 용도로 사용할 수 있다.
public void updateMember(Member member) {
try (SqlSession session = factory.openSession()) {
MemberMapper mapper = session.getMapper(MemberMapper.class);
int result = mapper.updateMember(member);
if (result > 0) {
System.out.println("Member 정보 update 성공");
session.commit();
} else {
System.out.println("Member 정보 update 실패");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void deleteMember(String id) {
try (SqlSession session = factory.openSession()) {
MemberMapper mapper = session.getMapper(MemberMapper.class);
int result = mapper.deleteMember(id);
if (result > 0) {
System.out.println("Member 정보 delete 성공");
session.commit();
} else {
System.out.println("Member 정보 delete 실패");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MemberDAO dao = new MemberDAO();
Member member = new Member("hong", "1234", "홍길동");
// DB에 Member 객체 정보 insert 하기
//dao.insertMember(member);
// hong 이라는 아이디를 가진 Member 정보 select 하기
Member searchedMember = dao.selectMemberById("hong");
System.out.println("============ 수정 전 ============ ");
System.out.println(searchedMember);
// hong 이라는 아이디를 가진 Member의 정보 update 하기
searchedMember.setName("홍길순");
dao.updateMember(searchedMember);
System.out.println("============ 수정 후 ============ ");
searchedMember = dao.selectMemberById("hong");
System.out.println(searchedMember);
// hong 이라는 아이디를 가진 Member의 정보 delete 하기
//dao.deleteMember(searchedMember.getId());
}
실행결과
update문이 잘 실행되었다. dao.deleteMember() 메소드를 주석 해제 하고 실행하면 데이터가 삭제된다.
Mybatis 키 자동 생성 사용하기(useGeneratedKeys, selectKey) (0) | 2022.05.11 |
---|---|
Mybatis 객체 형식으로 insert, select 하기 (0) | 2022.05.09 |
Mybatis 데이터베이스 접속 (0) | 2022.05.04 |
댓글 영역