1.ResultData클래스
public class ResultData {
@Getter
private String resultCode;
@Getter
private String msg;
@Getter
private Object data1;
private ResultData() {
}
public static ResultData from(String resultCode,String msg) {
return from(resultCode,msg,null);
}
public static ResultData from(String resultCode, String msg, Object data1) {
ResultData rd = new ResultData();
rd.resultCode = resultCode;
rd.msg = msg;
rd.data1 = data1;
return rd;
}
public boolean isSuccess() {
return resultCode.startsWith("S-");
}
public boolean isFail() {
return isSuccess() == false;
}
}
2. usr/article/getArticle에 ResultData적용
public ResultData getArticle(int id) {
Article article = articleService.getArticle(id);
if (article == null) {
return ResultData.from("F-1", Ut.f("%d번 게시물은 존재하지 않습니다.", id));
}
return ResultData.from("S-1", Ut.f("%d번 게시물입니다.", id), article);
}
1. ArticleController.doAdd()
@RequestMapping("usr/article/doAdd")
@ResponseBody
public ResultData doAdd(String title, String body) {
if (Ut.empty(title)) {
return ResultData.from("F-1", Ut.f("제목을 입력해 주세요."));
}
if (Ut.empty(body)) {
return ResultData.from("F-1", Ut.f("내용을 입력해 주세요."));
}
ResultData writeRd = articleService.writeArticle(title, body);
int id = (int) writeRd.getData1();
Article article = articleService.getArticle(id);
return ResultData.from(writeRd.getResultCode(), writeRd.getMsg(), article);
}
(writeRd)
에 data1은 작성된 게시물의 id가 들어있다2. ArticleService.writeArticle()
public ResultData writeArticle(String title, String body) {
articleRepository.writeArticle(title, body);
int id = articleRepository.getLastInsertId();
return ResultData.from("S-1", Ut.f("%d번 게시물이 생성되었습니다.", id), id);
}
1. ArticleController.getArticles()
@RequestMapping("usr/article/getArticles")
@ResponseBody
public ResultData getArticles() {
return articleService.getArticles();
}
2. ArticleService.getArticles()
public ResultData getArticles() {
List<Article> articles = articleRepository.getArticles();
return ResultData.from("S-1", "Article List", articles);
}
1. MemberController.doJoin()
@RequestMapping("usr/member/doJoin")
@ResponseBody
public ResultData doJoin(String loginId, String loginPw, String name, String nickname, String cellphoneNum,
String email) {
if (Ut.empty(loginId)) {
return ResultData.from("F-1", "아이디를 입력 해주세요.");
}
if (Ut.empty(loginPw)) {
return ResultData.from("F-2", "비밀번호를 입력 해주세요.");
}
if (Ut.empty(name)) {
return ResultData.from("F-3", "이름을 입력 해주세요.");
}
if (Ut.empty(nickname)) {
return ResultData.from("F-3", "닉네임 입력 해주세요.");
}
if (Ut.empty(cellphoneNum)) {
return ResultData.from("F-4", "전화번호를 입력 해주세요.");
}
if (Ut.empty(email)) {
return ResultData.from("F-5", "이메일을 입력 해주세요.");
}
ResultData joinRd = memberService.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
if (joinRd.isFail()) {
return joinRd;
}
if (joinRd.isFail()) {
return joinRd;
}
Member member = memberService.getMemberById((int) joinRd.getData1());
return ResultData.newData(joinRd, member);
}
Resultdata.from(joinRd.getResultCode(), joinRd.getMsg(), member)
를 사용해도되나2. MemberService.doJoin()
public ResultData doJoin(String loginId, String loginPw, String name, String nickname, String cellphoneNum, String email) {
// 로그인아이디 중복체크
Member existsMember = getMemberByLoginId(loginId);
if (existsMember != null) {
return ResultData.from("F-6", Ut.f("중복되는 아이디(%s)가 있습니다", loginId));
}
// 이름과 이메일 중복체크
existsMember = getMemberByNameAndEmail(name, email);
if (existsMember != null) {
return ResultData.from("F-7", Ut.f("중복되는 이름(%s)과 이메일(%s)이 있습니다", name, email));
}
memberRepository.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
int id = memberRepository.getLastInsertId();
return ResultData.from("S-1", Ut.f("%s님 회원가입 성공", nickname),id);
}
3.ResultData클래스
public static ResultData newData(ResultData Rd, Object data1) {
return ResultData.from(Rd.getResultCode(),Rd.getMsg(),data1);
}
ResultData<Integer> joinRd = memberService.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
memberService.doJoin() 는 ResultData타입을 반환한다
joinRd에는 ResultData<Integer>
타입만 저장될수 있다.
memberService.doJoin()메소드의 리턴타입이 ResultData<Integer>
아니고 ResultData(제네릭타입을 지정하지않은)이면 타입이 안전하지 않기 때문에
memberService.doJoin()메소드의 리턴타입이 ResultData<Integer>
이 되어야한다.
제네릭타입이 지정되지 않을시 Object로 타입이 지정
public static<DT> ResultData<DT> from(String resultCode, String msg, DT data1) {
ResultData<DT> rd = new ResultData<DT>();
rd.resultCode = resultCode;
rd.msg = msg;
rd.data1 = data1;
return rd;
}
ResultData.<Integer>from(resultCode, msg, **Integer타입 객체** )
으로 지정해줄수있지만 <integer>
생략가능