DataSourceUtils
554
작성한 질문수 4
커뮤니티에서 확인한대로 프로젝트를 닫고 buildgradle에서도 열어봤고 findById도 확인해 봤는데 계속 빨간 줄입니다,,
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.jdbc.datasource.DataSourceUtils;
import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class JdbcMemberRepository implements MemberRepository {
private final DataSource dataSource;
public JdbcMemberRepository(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public Member save(Member member) {
String sql = "insert into member(name) values(?)";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, member.getName());
pstmt.executeUpdate();
rs = pstmt.getGeneratedKeys();
if (rs.next()) {
member.setId(rs.getLong(1));
} else {
throw new SQLException("id 조회 실패");
}
return member;
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public Optional<Member> findById(Long id) {
String sql = "select * from member where id = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setLong(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return Optional.of(member);
} else {
return Optional.empty();
}
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public List<Member> findAll() {
String sql = "select * from member";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
List<Member> members = new ArrayList<>();
while(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
members.add(member);
}
return members;
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public Optional<Member> findByName(String name) {
String sql = "select * from member where name = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
rs = pstmt.executeQuery();
if(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return Optional.of(member);
}
return Optional.empty();
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
private Connection getConnection() {
return DataSourceUtils.getConnection(dataSource);
}
private void close(Connection conn, PreparedStatement pstmt, ResultSet rs)
{
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
close(conn);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void close(Connection conn) throws SQLException {
DataSourceUtils.releaseConnection(conn, dataSource);
}
}
답변 1
0
안녕하세요. 박재은님, 공식 서포터즈 OMG입니다.
두 가지 확인 사항이 필요합니다.
1. 자바 11인지?
2. jdk, intellij, 스프링 프로젝트가 윈도우 기준 c 드라이브에 설치되어있는지
(c드라이브에 설치되어있지 않은 경우 오류가 발생할 수 있습니다.)
추가 댓글이 없어 확인이 불가하였지만 아래링크의 질문자 분과 같이 시도해볼 수 있는 방법은 시도하신 것으로 보입니다.
https://www.inflearn.com/questions/410751
두 가지 내용 확인부탁드립니다.
감사합니다.
..
0
84
2
Unused property.....
0
104
2
project JDK is misconfigured
0
139
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
84
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
235
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
105
2
윈도우 build test오류 질문
1
103
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
102
2
테스트 실행 시 에러 질문
0
295
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
132
1
윈도우 gradlew.bat 에러
0
170
1
@PostMapping("/members/new")가 동작하지 않습니다
0
91
1
java static class와 kotlin class
0
80
1
스프링 DB연결
0
128
1
소요 시간
0
89
2
ddl.sql에 빨간 밑줄
1
102
2
welcome page 에러
0
186
3
잘 모르겠습니다.
0
164
2
fail을 똑같이 쳤는데 오류가 발생해요
0
159
2
index.html Welcome page
0
127
1
프로젝트 gradle-groovy ?
0
382
1
테스트코드 메서드명 한글
0
205
2





