상세 컨텐츠

본문 제목

[spring] 어려운거...

카테고리 없음

by esoesmio 2023. 5. 31. 16:58

본문

common - jdbcUtil.java -  dto - boarddto - userdto -  boardservice  - boardserviceimpl  - boardao - boardservicetest

package com.mycompany.myapp.service;

import java.util.List;

import com.mycompany.myapp.dto.BoardDTO;

public interface BoardService {
	
	//글등록
void insertBoard(BoardDTO boardDTO);
	

	
	//글수정
void updateBoard(BoardDTO boardDTO);

	
	
	//글삭제
void deleteBoard(int boardNo);

	
	//글 상세 조회

	BoardDTO getBoard(int boardNo);
	// 글 목록 조회
	//List<BoardDTO> 여러 게시글을 담고있는 List
	
	List<BoardDTO> getBoardList();
	
	

}​
package com.mycompany.myapp.service;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

import com.mycompany.myapp.dto.BoardDTO;

public class BoardServiceTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		//1. 스프링 컨테이너 구동
		AbstractApplicationContext factory = new GenericXmlApplicationContext("root-context.xml");
		
		//2. BoardService변수의 의존성 검색과 의존성 주입
		
		BoardService boardService = (BoardService) factory.getBean("boardService");
		
		//3. 글 등록 테스트.
		
		BoardDTO boardDTO = new BoardDTO();
		boardDTO.setBoardTitle("테스트 제목");
		boardDTO.setBoardContent("Test 내용입니다.");
		boardDTO.setBoardWriter("관리자");
		
		boardService.insertBoard(boardDTO);
		
		//4. 글상세 조회 테스트
		BoardDTO returnBoard = boardService.getBoard(1);
		System.out.println(returnBoard);
		
		
		
		
		
		//4, 스프링 컨테이너 종료
		
		
		
		
		
		
		factory.close();
		

		
		
		
	}

}
package com.mycompany.myapp.service.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.mycompany.myapp.common.JDBCUtil;
import com.mycompany.myapp.dto.BoardDTO;

//DAO(Data Access Object): DB에 직접 접근하는 객체 
//					=> Boot에서는 Mapper 인터페이스나 Repository  인터페이스 사용 
@Repository("boardDAO")
public class BoardDAO {
	//JDBC 관련 변수
	private Connection conn = null;
	private PreparedStatement stmt = null;
	private ResultSet rs = null;
	
	//쿼리등록
	private final String INSERT_BOARD = "INSERT INTO T_BOARD ("
			+ "				BOARD_TITLE, "
			+ "				BOARD_CONTENT, "
			+ "				BOARD_WRITER"
			+ "			) VALUES ("
			+ "				?,"
			+ "				?,"
			+ "				?"
			+ "			)";
	
	private final String GET_BOARD = "SELECT "
			+ "		BOARD_NO"
			+ "	  , BOARD_TITLE"
			+ "	  , BOARD_CONTENT"
			+ "   , BOARD_WRITER"
			+ "   , BOARD_REGDATE"
			+ "   , BOARD_CNT"
			+ "  FROM T_BOARD"
			+ "  WHERE BOARD_NO = ?";
	
	//글 등록
	public void insertBoard(BoardDTO boardDTO) {
		System.out.println("insertBoard 실행");
		
		try {
			//DB Connection 객체 얻기
			conn = JDBCUtil.getConnection();
			
			//실행될 쿼리문 stmt에 담기
			stmt = conn.prepareStatement(INSERT_BOARD);
			
			//쿼리문 실행될 때 넘길 파라미터 셋팅
			stmt.setString(1, boardDTO.getBoardTitle());
			stmt.setString(2, boardDTO.getBoardContent());
			stmt.setString(3, boardDTO.getBoardWriter());
			
			//쿼리문 실행
			//insert, delete, update는 executeUpadte 사용
			//select는 executeQuery 사용
			stmt.executeUpdate();
		} catch(Exception e) {
			System.out.println(e.getMessage());
		} finally {
			JDBCUtil.close(stmt, conn);
		}
	}
	
	//글 수정
	public void updateBoard(BoardDTO boardDTO) {
		
	}
	
	//글 삭제
	public void deleteBoard(int boardNo) {
		
	}
	
	//글 상세 조회
	public BoardDTO getBoard(int boardNo) {
		System.out.println("getBoard 실행");
		
		BoardDTO boardDTO = new BoardDTO();
		
		try {
			conn = JDBCUtil.getConnection();
			
			stmt = conn.prepareStatement(GET_BOARD);
			
			stmt.setInt(1, boardNo);
			
			rs = stmt.executeQuery();
			
			if(rs.next()) {
				boardDTO.setBoardNO(rs.getInt("BOARD_NO"));
				boardDTO.setBoardTitle(rs.getString("BOARD_TITLE"));
				boardDTO.setBoardContent(rs.getString("BOARD_CONTENT"));
				boardDTO.setBoardWriter(rs.getString("BOARD_WRITER"));
				boardDTO.setBoardRegdate(rs.getDate("BOARD_REGDATE"));
				boardDTO.setBoardCnt(rs.getInt("BOARD_CNT"));
			}
		} catch(Exception e) {
			System.out.println(e.getMessage());
		} finally {
			JDBCUtil.close(rs, stmt, conn);
		}
		
		return boardDTO;
	}
	
	//글 목록 조회
	public List<BoardDTO> getBoardList() {
		return null;
	}
	
	
	
	
	
	
}​
package com.mycompany.myapp.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.mycompany.myapp.dto.BoardDTO;
import com.mycompany.myapp.service.BoardService;





//Serviceimpl : 비즈니스 로직을 구현하는 클래
@Service("boardService")
public class BoardServiceimpl implements BoardService {
	
	
	@Autowired
	@Qualifier("boardDAO")
	BoardDAO boardDAO;
	
	//기본게시판이라 비즈니스 로직이 별도로 존재하지 아ㅣㄴㅎ아서 바로 DAO 객체의 메소드 호출
	
	@Override
	public void insertBoard(BoardDTO boardDTO) {
		// TODO Auto-generated method stub
		
		System.out.println("삽입이 성공했습니다.");
		
		boardDAO.insertBoard(boardDTO);
		
	}

	@Override
	public void updateBoard(BoardDTO boardDTO) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void deleteBoard(int boardNo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public BoardDTO getBoard(int boardNo) {
		// TODO Auto-generated method stub
		return boardDAO.getBoard(boardNo);
	}

	@Override
	public List<BoardDTO> getBoardList() {
		// TODO Auto-generated method stub
		return null;
	}

	
	
	
	
	
	

}
package com.mycompany.myapp.dto;

import java.sql.Date;

public class BoardDTO {

	
	

	
private int boardNO;
private String boardTitle;
private String boardContent;
private String boardWriter;
private Date boardRegdate;
private int boardCnt;
public int getBoardNO() {
	return boardNO;
}
public void setBoardNO(int boardNO) {
	this.boardNO = boardNO;
}
public String getBoardTitle() {
	return boardTitle;
}
public void setBoardTitle(String boardTitle) {
	this.boardTitle = boardTitle;
}
public String getBoardContent() {
	return boardContent;
}
public void setBoardContent(String boardContent) {
	this.boardContent = boardContent;
}
public String getBoardWriter() {
	return boardWriter;
}
public void setBoardWriter(String boardWriter) {
	this.boardWriter = boardWriter;
}
public Date getBoardRegdate() {
	return boardRegdate;
}
public void setBoardRegdate(Date boardRegdate) {
	this.boardRegdate = boardRegdate;
}
public int getBoardCnt() {
	return boardCnt;
}
public void setBoardCnt(int boardCnt) {
	this.boardCnt = boardCnt;
}
@Override
public String toString() {
	return "BoardDTO [boardNO=" + boardNO + ", boardTitle=" + boardTitle + ", boardContent=" + boardContent
			+ ", boardWriter=" + boardWriter + ", boardRegdate=" + boardRegdate + ", boardCnt=" + boardCnt + "]";
}

	
	
}​
package com.mycompany.myapp.dto;

import java.sql.Date;

// DTO(DATA TRANSfer Object) : 데이터를 전송하는 객체. view-controller-model사이에서 테이블과 매핑되는 형태로데이터를 주고받는 객체.
// VO(value ovject) : 의미상으로는 값을 전달하는 역할만 하는 객체지만 현업에서는 dto동일한 역할을 한다.
//entity
// 디비에서 나온걸 화면에서 전송해줄때 또는 화면에 나온걸 디비에 넣을
// 그냥 맵이나 리스트로처리할때도 있다.

public class UserDTO {

private int id;
private String userID;
private String userPw;
private String userName;
private String userEmail;
private String userTel;
private Date userRegdate;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getUserID() {
	return userID;
}
public void setUserID(String userID) {
	this.userID = userID;
}
public String getUserPw() {
	return userPw;
}
public void setUserPw(String userPw) {
	this.userPw = userPw;
}
public String getUserName() {
	return userName;
}
public void setUserName(String userName) {
	this.userName = userName;
}
public String getUserEmail() {
	return userEmail;
}
public void setUserEmail(String userEmail) {
	this.userEmail = userEmail;
}
public String getUserTel() {
	return userTel;
}
public void setUserTel(String userTel) {
	this.userTel = userTel;
}
public Date getUserRegdate() {
	return userRegdate;
}
public void setUserRegdate(Date userRegdate) {
	this.userRegdate = userRegdate;
}


@Override
public String toString() {
	return "UserDTO [id=" + id + ", userID=" + userID + ", userPw=" + userPw + ", userName=" + userName + ", userEmail="
			+ userEmail + ", userTel=" + userTel + ", userRegdate=" + userRegdate + "]";
}


}
package com.mycompany.myapp.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.mysql.cj.protocol.Resultset;

//DAO클래스에서 DB Connection이나 DB CONNECTION close해주는 메소드
//DAO 콩통적으로 사용될 메소드 정


public class JDBCUtil {

	public static Connection getConnection() {
		
		try {
			//사용할 DBMS의 드라이버 클래스 로드
			Class.forName("com.mysql.cj.jdbc.Driver");
			//DriverManager 클래스의 getConnection메소드로 커넥션을 얻어서 리턴을 해줌.
			//매개변수로 url과 username, password를 넣어주면 됨.
			
			
			return DriverManager.getConnection("jdbc:mysql://localhost:3306/studydb?serverTimezone=UTC","study","Dutajrdjfk1!");
			
			
			
		}catch(Exception e) {
			System.out.println(e.getMessage());
		} return null;
		
	}
	//2개의 close메소드
	//resultSet이 없는 메소드(insert, delete, update)
	//resultset 이 있는 메소드(select)
	
	
	//resultSet이 없는 메소드(insert, delete, update)
public static void close(PreparedStatement stmt, Connection conn) {
	
	if(stmt!=null) {
		
		try {
			
		if(!stmt.isClosed()) {
			stmt.close();
		}
			
		}catch(Exception e) {
			System.out.println(e.getMessage());
		} finally {
			stmt = null;
		}
		
	}
	
	if(conn !=null) {
		try {
			if(!conn.isClosed()) {
				conn.close();
				
			}
			
		}catch(Exception e) {
			System.out.println(e.getMessage());
		} finally {
			conn=null;
		}
		
	}
	
}
	
	
	/////resultSet이 있는 메소드(select)
//2개의 close메소드
//resultSet이 없는 메소드(insert, delete, update)
//resultset 이 있는 메소드(select)


//resultSet이 없는 메소드(insert, delete, update)
public static void close(ResultSet rs, PreparedStatement stmt, Connection conn) {

if(rs!=null) {
	
	try {
		
	if(!rs.isClosed()) {
		rs.close();
	}
		
	}catch(Exception e) {
		System.out.println(e.getMessage());
	} finally {
		rs = null;
	}
	
}

if(conn !=null) {
	try {
		if(!conn.isClosed()) {
			conn.close();
			
		}
		
	}catch(Exception e) {
		System.out.println(e.getMessage());
	} finally {
		conn=null;
	}
	
}

}
	
	
	
}

 

 

 

 

 

 

댓글 영역