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>