********************************
https://youtu.be/bmLFtrZVnRQ
https://youtu.be/aIAUFDaXAbE
https://youtu.be/y-AHuYVkt6E
https://youtu.be/bepiioZDUN8
https://youtu.be/aIAUFDaXAbE
https://youtu.be/IHdjBXlvNRY
https://youtu.be/Jc9UTY_lcrY
https://youtu.be/joL360SrrtI
https://youtu.be/WdgDWbLCOUg
https://youtu.be/eMuFWW6-8i0
https://youtu.be/c3tQnaNiOAQ
https://youtu.be/WYjVmIplNyI
https://youtu.be/k5g2kK1WQ34
https://youtu.be/lMWwaysjIkI
https://youtu.be/YYlXmkpjRrU
https://youtu.be/J8SEJ9lCDI8
https://youtu.be/3-pszozdXAM
https://youtu.be/K6T6tx9-qI4
https://youtu.be/CCqVKz6RRLs
Programming School
spring Oralce과 mybatis
spring Oracle과 mybatis 연동 실습(회원 목록,등록,수정,삭제)
oracle+mybatis
spring boot oracle mybatis
********************************
********************************
*회원관리의 전체적인 구조
********************************
Controller
MemberController.java
Service
MemberService.java 인터페이스
MemberServiceImpl.java 구현클래스
Model
MemberDAO.java 인터페이스
MemberDAOImpl.java 구현클래스
MemberDTO.java
memberMapper.xml sql매퍼
View
member_list.jsp
write.jsp
view.jsp
----------------------------------------------------------------------------------------
create table member(
userid varchar2(50) not null primary key,
passwd varchar2(50) not null,
name varchar2(50) not null,
email varchar2(50),
join_date date default sysdate);
insert into member(userid, passwd, name, email) values
('kim','1234','김철수','kim@gmail.com');
select * from member;
commit;
----------------------------------------------------------------------------------------
**********************************
*모델
*model.dt.MemberDTO.java
**********************************
import java.util.Date;
public class MemberDTO{
private String userid;
private String passwd;
private String name;
private String email;
private Date join_date;
}
**********************************
*DAO
*model.dao.MemberDAO.java
**********************************
package com.example.spring01.model.dao;
import java.util.List;
import com.example.spring01.model.dto.MemberDTO;
public interface MemberDAO{
public List<MemberDTO> memberList();
public void insertMember(MemberDTO vo);
public MemberDTO viewMember(String userid);
public void deleteMember(String userid);
public void updateMember(MemberDTO vo);
//비밀번호 체크
public boolean checkPw(String userid, String passwd);
}
----------------------------------------------------------------------------------------
**********************************
*MemberDAO
**********************************
package com.example.spring01.model.dao;
import java.util.List;
@Repository //서버가 startup될 때 이 클래스가 메모리에 자동으로 등록됨
public class MemberDAOImpl implements MemberDAO{
//로깅 처리를 위한 객체 선언
private static final Logger loggger = LoggerFactory.getLogger(MemberDAOImpl.class);
//SqlSession 객체를 개발자가 직접 생겅하지 않고 스프링에서 연결시켜 줌
@Inject //의존관계 주입
SqlSession sqlSession;
@Override
public List<MemberDTO> memberList() {
logger.info("memberList called");
// sql mapper에 작성된 sql 코드가 실행됨 (auto commit & close)
return sqlSession.selectList("member.memberList");
}
@Override
public MemberDTO viewMember(String userid) {
// MemberDTo dto = sqlSession.selectOne("member.viewMember", userid);
// return dto;
return sqlSession.selectOne("member.viewMember", userid);
}
@Override
public void deleteMember(String userid) {
sqlSession.delete("member.deleteMember", userid);
}
@Override
public void updateMember(MemberDTO vo) {
sqlSession.update("member.updateMember", vo);
}
@Override
public boolean checkPw(String userid, String passwd) {
boolean result = false;
// mapper에 넘길 값이 2개 이상인 경우 map으로 묶오서 전달
Map<String, String> map = new HashMap<>();
map.put("userid", userid);
map.put("passwd", passwd);
int count = sqlSession.selectOne("member.checkPw", map);
// 리턴값이 1이면 true, 0이면 false
if(count==1) result = true;
return result;
}
*****************************************************************************************************************************
*****************************************************************************************************************************
**********************************
*service.MemberService.java
*MemberService
**********************************
package com.example.spring01.services;
import java.util.List;
import com.example.spring01.model.dto.MemberDTO;
public interface MemberService{
public List<MemberDTO> memberList();
public void insertMember(MembmerDTO dto);
public MemberDTO viewMember(String userid);
public void deleteMember(String userid);
public void updateMember(MemberDTO dto);
// 비밀번호 체그
public boolean checkPw(String userid, String passwd);
}
----------------------------------------------------------------------------------------
package com.example.spring01.service;
import java.util.List;
@Service
public class MemberServiceImpl implements MemberService{
// MemberDAO memberDao = new MemberDAOImpl();
@Inject // 스프링 컨테이너가 만든 dao 객체가 연결됨 (의존관계 주입)
MemberDAO memberDao;
@Override
public MemberDTO viewMember(String userid) {
return memberDao.viewMember(userid);
}
@Override
public boolean checkPw(String userid, String passwd) {
return memberDao.checkPw(userid, passwd);
}
@Override
public void updateMember(MemberDTO dto) {
memberDao.updateMember(dto);
}
}
----------------------------------------------------------------------------------------
*****************************************************************************************************************************
*****************************************************************************************************************************
컨트롤러 -> 서비스 -> DAO -> mybatis(mapper호출) -> jsp
**********************************
*MemberController
**********************************
package com.example.spring01.controller;
@Controller // 현재 클래스를 Controller Bean으로 등록함
public class MemberController{
private static final Logger logger = LoggerFactory.getLogger(MemberController.class);
@Inject // MemberService 객체가 주입됨
MemberService memberService;
// MemberService memberService = new MemberServiceImpl();
@RequestMapping("member/list.do") // 사용자가 요청하는 주소
public String memberList(Model model) {
List<MemberDTO> list = memberService.memberList();
logger.info("회원 목록:" + list);
model.addAttribute("list", list); // 모델에 저장
return "member/member_list"; // 출력 페이지로 포워딩
}
@RequestMapping("member/write.do")
public String write() {
return "member/write";
}
// 폼에 입력한 데이터가 MemberDTO dto 변수에 저장됨
// request.getParameter 생략
@RequestMapping("member/insert.do")
public String insert(@ModelAttribute MemberDTO dto) {
// public String insert(MemberDTO dto, HttpServletRequest request) {
// String name = request.getParameter("name");
memberService.insertMember(dto);
return "redirect:/member/list.do"; // 목록 갱신
}
// view.do?userid=kim 이라면
// @RequestParam String userid 변수에 kim이 저장됨
@RequestMapping("member/view.do")
public String view(@RequestParam String userid, Model model) {
// System.out.println("클릭한 아이디:" + userid);
// info, debug, warn, error
// logger.info("클릭한 아이디:" + userid);
// 회원정보를 모델에 저장
model.addAttribute("dto", memberService.viewMember(userid));
// view.jsp로 포워딩
return "member/view"; // view.jsp로 포워딩
}
@RequestMapping("member/update.do")
pblic String update(@ModelAttribute MemberDTO dto, Model model) {
boolean result = memberService.checkPw(
dto.getUserid(), dto.getPasswd());
logger.info("비밀번호 확인:" + result);
if(result) { // 비밀번호가 맞으면
memberService.updateMember(dto): // 레코드 수정
return "redirect:/member/list.do"; // 목록으로 이동
} else { // 비밀번호가 틀리면
MemberDTO dto2 = memberService.viewMember(dto.getUserid));
dto2.setJoin_date(dto2.getJoin_date()); // 날짜가 지워지지 않도록
model.addAttribute("dto", dto);
model.addAttribute("message", "비밀번호가 일치하지 않습니다.");
return "member/view"; // 수정 페이지로 되돌아감
}
@RequestMapping("member/delete.do")
public String delete(@RequestParam String userid,
@RequestParam String passwd, Model mode) {
boolean result = memberService.checkPw(userid, passwd);
if(resutl) {
memberService.deleteMember(userid);
return "redirect:/member/list.do";
} else {
model.addAttribute("message", "비밀번호가 일치하지 않습니다.");
model.addAttribute("dto", memberService.viewMember(userid));
return "member/view"; }
}
*redirect를 하지 않으면 forward가 됩니다. 주소가 안바뀝니다.
*변수명 일치해야 함
테이블필드명 = DTO = FORM
***********************************************
*설명내용
- @ModelAttribute : 폼의 전체 데이터, dto
- @RequestParam : 폼의 개별값
***********************************************
memberService.updateMember
F3 -> 인터페이스, 바로 소스보기
F4 -> 계층구조보기 -> MemberServiceImpl 선택 -> updateMember 선택
*****************************************************************************************************************************
*****************************************************************************************************************************
'개발 및 관리 > Java' 카테고리의 다른 글
JAVA FULL STACK 기본 역량 및 수준별 프로젝트 (0) | 2022.03.12 |
---|---|
자바 개발자라면 반드시 봐야 할 책 (0) | 2022.03.12 |
Eclipse에서 maven에 dbcp dependency 추가하기 (0) | 2022.01.07 |
자바(JAVA) JDK 설치 및 환경 변수 설정하는 방법 (0) | 2021.12.21 |
request.getContextPath, request.getRequestURI, request.getRequestURL, request.ServletPath, request.getRealPath (0) | 2021.12.21 |