<참조> https://www.boostcourse.org/web316/lecture/20660
Spring, JDBC 예제 코드
1. Spring JDBC 패키지
org.springframework.jdbc
.core : JdbcTemplate, Helper 객체를 제공한다.
.datasource : DataSource 접근 클래스, 트랜젝션매니져, DataSource 구현을 제공한다.
.object : RDBMS 조회, 갱신, 저장 객제를 제공한다.
.support : jdbc.core, jdbc.object 사용하는 JDBC 프레임워크를 지원한다.
2. JDBC Template (org.springframework.jdbc.core 핵심 클래스)
리소스 생성, 해지를 자동 처리하고, 쿼리 문장 생성과 실행을 처리한다.
SQL 조회, 갱신 및 저장 프로시저 호출, ResultSet 반복 실행하게 해준다.
JDBC 예외를 org.springframework.dao 패키지에 정의된 일반 예외로 바꿔준다.
3. 예제 코드
(1) 테이블 열(row) 개수 (Select)
int rowCount = this.jdbcTemplate.queryForInt("select count(*) from mytable");
(2) 특정 조건에 일치하는 열(row) 개수 (Select)
int rowCount = this.jdbcTemplate.queryForInt(
"select count(*) from mytable where name = ?", "sualchi");
(3) 문자열 결과 처리 (Select)
String name = this.jdbcTemplate.queryForObject(
"select name from mytable where id = ?", new Object[]{1004L}, String.class);
(4) 특정 객체(예; User 클래스 객체) 한 건 조회 (Select)
User user = this.jdbcTemplate.queryForObject(
"select name, age, tel from mytable where id = ?", new Object[]{1004L},
new RowMapper<User>() {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setName(rs.getString("name"));
user.setAge(rs.getString("age"));
user.setTel(rs.getString("tel"));
return user;
}
});
(5) 여러 건 조회하기 (Select)
List<User> user_list = this.jdbcTemplate.query(
"select name, age, tel from mytable",
new RowMapper<User>() {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setName(rs.getString("name"));
user.setAge(rs.getString("age"));
user.setTel(rs.getString("tel"));
return user;
}
});
(6) 한건 구하기와 여러 건 구하기가 있을 경우 (Select)
public List<User> findAllUser() {
return this.jdbcTemplate.query( "select name, age, tel from mytable", new UserMapper());
}
private static final class UserMapper implements RowMapper<Userr> {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setName(rs.getString("name"));
user.setAge(rs.getString("age"));
user.setTel(rs.getString("tel"));
return actor;
}
}
(7) 추가 (Insert)
this.jdbcTemplate.update("insert into mytable (name, age, tel) values (?, ?, ?)", "Hong", "350", "000-1234-1234");
(8) 수정 (Update)
this.jdbcTemplate.update("update mytable set = ? where id = ?", "Park", 1004L);
(9) 삭제 (Delete)
this.jdbcTemplate.update("delete from mytable where id = ?", Long.valueOf(1004L));
4. JdbcTemplate 아닌 다른 접근
(1) NamedParameterJdbcTemplate
JDBC statement 인자를 파라미터명으로 작성할 수 있다.
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public int countOfUserByName(String name) {
String sql = "select count(*) from mytable where name = :name";
SqlParameterSource namedParameters = new MapSqlParameterSource("name", name);
return this.namedParameterJdbcTemplate.queryForObject(sql, namedParameters, Integer.class);
}
(2) 간편한 데이터 insert
jdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("MyTable");
Map<String,Object> parameters = new HashMap<String,Object>();
parameters.put("name", name);
parameters.put("age", age);
parameters.put("tel", tel);
jdbcInsert.execute(parameters);
[참고] 레퍼런스 사이트
Data Access
The Data Access Object (DAO) support in Spring is aimed at making it easy to work with data access technologies (such as JDBC, Hibernate, or JPA) in a consistent way. This lets you switch between the aforementioned persistence technologies fairly easily, a
docs.spring.io
'SPRING' 카테고리의 다른 글
Spring WEB MVC 프레임워크 (2) (0) | 2022.06.13 |
---|---|
Spring WEB MVC 프레임워크 (1) (0) | 2022.06.12 |
이클립스 메이븐 프로젝트 만들기 (0) | 2022.06.06 |
스프링 부트 JAR 독립 실행/배포 (0) | 2022.06.06 |
스프링 제대로 공부했는지 5분 안에 확인하는 방법 (0) | 2022.05.29 |