ArticleRepository.xml
<mapper namespace="com.kjh.exam.demo.repository.ArticleRepository">
<insert id="writeArticle">
INSERT INTO article
SET regDate = NOW(),
updateDate = NOW(),
title = #{title},
`body`= #{body}
</insert>
<select id="getArticle" resultType="Article">
SELECT * FROM article
WHERE id = #{id}
</select>
<select id="getArticles" resultType="Article">
SELECT * FROM article
</select>
<delete id="deleteArticle">
DELETE FROM article
WHERE id = #{id}
</delete>
<update id="modifyArticle">
UPDATE article SET updateDate = NOW(),
title = #{title},
`body`= #{body}
WHERE id = #{id}
</update>
<select id="getLastInsertId" resultType="int">
SELECT LAST_INSERT_ID()
</select>
</mapper>
기존에는 Mapper 인터페이스에 어노테이션을 이용해 SQL문을 작성하였으나 XML파일
로 이전
Mapper 인터페이스 : Mapper 설정 파일(xml)에 있는 SQL 쿼리문을 호출하기 위한 인터페이스
XML파일로 작성시 namespace
에 인터페이스의 전체 경로
를 기입해줘야 한다. 이 xml 파일과 해당 인터페이스를 매핑
인터페이스와 xml 파일을 연동해두고 쿼리문의 ID와 인터페이스에 동일한 메소드를 만들어둠으로써 해당 메소드를 호출하면 자동으로 쿼리문이 실행되도록 해주는 방식
resultType속성은 MyBatis에서 쿼리문 수행후 메서드 반환타입
을 지정하는 속성
getArticles 메소드는 list값을 반환받도록 되있다. 하지만 mapper에서의 리턴값은 Article이다.
한 행을 객체로 보기때문에 한 행을 객체 Article로 담은 뒤 mybatis가 알아서 리스트로 넣어주기 때문
<update id="modifyArticle">
UPDATE article
<set>
updateDate = NOW(),
<if test="title != null">title = #{title},</if>
<if test="body != null">`body`= #{body}</if>
</set>
WHERE id = #{id}
</update>
http://localhost:8081/usr/article/doModify?id=7&title=제목수정
1. UsrMemberController
@Controller
public class UsrMemberController {
@Autowired
MemberService memberService;
// 액션 메소드
@RequestMapping("usr/member/doJoin")
@ResponseBody
public String doJoin(String loginId, String loginPw, String name, String nickname,
String cellphoneNum, String email) {
memberService.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
return nickname+"님 회원가입 했습니다.";
}
2. MemberService
@Service
public class MemberService {
MemberRepository memberRepository;
@Autowired
MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
public void doJoin(String loginId, String loginPw, String name, String nickname, String cellphoneNum,
String email) {
memberRepository.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
}
3. MemberRepository
@Mapper
public interface MemberRepository {
void doJoin(String loginId, String loginPw, String name, String nickname,
String cellphoneNum, String email);
}
4. MemberRepository.xml
<insert id="doJoin">
INSERT INTO `member`
SET regDate = NOW(),
updateDate = NOW(),
loginId = #{loginId},
loginPw = #{loginPw},
`name` = #{name},
nickname = #{nickname},
cellphoneNum = #{cellphoneNum},
email = #{email};
</insert>