일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Doit입문SQL
- 생성자
- 크롤링 오류
- 자바 오류
- 크롤링
- 예제
- 숫자 형식
- html
- 웹 브라우저 전쟁
- SQL입문
- 자바 예외
- 데이터베이스
- 자바
- DoitSQL
- 숫자형식오류
- 웹브라우저 수용도
- 배열 예제
- 함수
- DoIt
- HTML역사
- R1C3
- DoitSQL입문
- 페이지분석
- 예외
- dbms
- 함수 선언
- 키-값 데이터베이스
- SQL
- 배열 3요소
- 우아한테크
Archives
- Today
- Total
프로그래밍
[Springboot] DB 연결 본문
728x90
반응형
2023.09.18.월
DB연결
Spring boot 방식으로 데이터베이스와 연결하고 기본적인 형식을 구성해보자
라이브러리 설정
프로젝트 설정시 JDBC API와 사용할 데이터베이스의 Driver를 추가해준다
Oracle은 유료/무료 버전에 따라 클라우드 Driver 연결이 안될 수 있기 때문에
따로 Build Path / jar 등을 추가해주어야 한다(기존 Web방식과 동일)
의존성을 통해 올바르게 추가된것을 알 수 있다
DB 연결
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:mysql://localhost:3306/kimdb
# jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=root
spring.datasource.password=1234
DB 연결은 application.properties 에서 설정할 수 있다
# 주석은 Oracle
코드 구현
MemberDTO
import lombok.Data;
@Data
public class MemberDTO {
private String mid;
private String mpw;
private String mSearch;
}
MemberDAO
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BoardDAO {
// 의존관계(멤버변수)
@Autowired
private JdbcTemplate jdbcTemplate;
// 응집도를 높여줌
private final String SQL_SELECTALL ="SELECT * FROM BOARD";
private final String SQL_SELECTONE ="SELECT * FROM BOARD WHERE BID = ? ";
private final String SQL_INSERT ="INSERT INTO BOARD (MID, CONTENT) VALUES(?,?) ";
private final String SQL_UPDATE ="UPDATE BOARD SET CONTENT = ? WHERE BID = ? ";
private final String SQL_DELETE ="DELETE FROM BOARD WHERE BID = ? ";
public List<BoardDTO> selectAll(BoardDTO bDTO) {
// 반복적인 로직을 대신 수행하는 "템플릿 패턴"을 활용
//jdbcTemplate.query(SQL_SELECTALL, new BeanPropertyRowMapper<MemberDTO>(MemberDTO.class));
return jdbcTemplate.query(SQL_SELECTALL, new BeanPropertyRowMapper<BoardDTO>(BoardDTO.class));
}
public BoardDTO selectOne(BoardDTO bDTO) {
try {
Object[] args = { bDTO.getBid()};
return jdbcTemplate.queryForObject(SQL_SELECTONE, args, new BeanPropertyRowMapper<BoardDTO>(BoardDTO.class));
}
catch (EmptyResultDataAccessException e) {
return null;
}
}
public boolean insert(BoardDTO bDTO) {
int result = jdbcTemplate.update(SQL_INSERT, bDTO.getMid(), bDTO.getContent());
if(result <= 0) {
return false;
}
return true;
}
public boolean update(BoardDTO bDTO) {
int result = jdbcTemplate.update(SQL_UPDATE, bDTO.getContent(), bDTO.getBid());
if(result <= 0) {
return false;
}
return true;
}
public boolean delete(BoardDTO bDTO) {
int result = jdbcTemplate.update(SQL_DELETE, bDTO.getBid());
if(result <= 0) {
return false;
}
return true;
}
}
new BeanPropertyRowMapper<MemberDTO>(MemberDTO.class)
기존에는 rowMapper 클래스를 직접 만들어 사용하였지만
현재는 SpringBoot에서 제공하는 클래스를 사용한다
소스코드 보러가기
728x90
반응형
'자바 > Spring Boot' 카테고리의 다른 글
[SpringBoot] day95 : MyBatis 프레임워크 (0) | 2023.09.27 |
---|---|
[SpringBoot] day93 : Service와 Interface (2) | 2023.09.21 |
[SpringBoot] day89 : 유효성검사(Validator) (0) | 2023.09.15 |
[SpringBoot] day88 : 스프링부트 방식으로 MVC 구현(값 주고 받기) (1) | 2023.09.14 |
[SpringBoot] 스프링 VS 스프링부트(Spring VS SpringBoot) (0) | 2023.09.13 |
Comments