앞서 올린 예제를 활용해서 해보겠습니다.
http://smjava.tistory.com/70 에서 스프링 설정파일과, 모델클래스만 복사해서.
Dept
package jdbc2;
public class Dept {
private int deptno;
private String dname;
private String loc;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
}
}
스프링 설정파일
이제 만들어볼 Dao클래스를 어노테이션으로 등록하자.
저는 이예제를 jdbc2라는 패키지 안에서 하고있으니 아래와 같이 잡아 줍시다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="jdbc2"></context:component-scan>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/sds2"></property>
<property name="password" value="mysql"></property>
<property name="username" value="root"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
</beans>
DeptDao클래스
package jdbc2;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Component;
import jdbc2.Dept;
@Component
public class DeptDao {
@Autowired
private NamedParameterJdbcTemplate jdbcTempalte;
public void setJdbcTemplate(NamedParameterJdbcTemplate jdbcTemplate){
this.jdbcTempalte = jdbcTemplate;
}
RowMapper<Dept> mapper = new RowMapper<Dept>() {
@Override
public Dept mapRow(ResultSet rs, int idx) throws SQLException {
// FIXME Auto-generated method stub
Dept dept = new Dept();
dept.setDeptno(rs.getInt("deptno"));
dept.setDname(rs.getString("dname"));
dept.setLoc(rs.getString("loc"));
return dept;
}
};
//네임드파라미터에 인자값 매핑하기
//인자가 한개일때/인자가 여러개일때
//자바 Map계열 이용/Spring SqlParam계열 사용
public int deleteDept(int deptno){
return jdbcTempalte.update
("delete from dept where deptno = :deptno", Collections.singletonMap("deptno", deptno));
}
public int insertDept(Dept dept){
Map<String, Object> map = new HashMap<String, Object>();
map.put("deptno", dept.getDeptno());
map.put("dname", dept.getDname());
map.put("loc", dept.getLoc());
return jdbcTempalte.update("insert into dept values(:deptno,:dname,:loc)", map);
}
public int updateDept(Dept dept){
BeanPropertySqlParameterSource map = new BeanPropertySqlParameterSource(dept);
return jdbcTempalte.update("update dept set dname = :dname, loc = :loc where deptno = :deptno", map);
//여기서 물음표대신에 이름을 적고 맵이나 sqlParam객체<K,V>형태의 자료형에 K에 이름을 V에 값을
}
public Dept selectOne(int deptno){
return jdbcTempalte.queryForObject
("select * from dept where deptno = :deptno",
new MapSqlParameterSource("deptno", deptno), mapper);
}
public List<Dept> selectAll(){
return jdbcTempalte.query("select * from dept", mapper);
}
}
클래스 안에 주석달려있는 글 잘보시고 이렇게 작성해주시고
test 해봅시다~
package jdbc2;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test {
public static void main(String[] args) {
// FIXME Auto-generated method stub
ApplicationContext context = new FileSystemXmlApplicationContext("src/jdbc2/applicationContext.xml");
DeptDao dao = context.getBean("deptDao", DeptDao.class);
// for(Dept d : dao.selectAll())
// System.out.println(d);
//insert
// Dept d = new Dept();
// d.setDeptno(80);
// d.setDname("haha");
// d.setLoc("Busan");
// dao.insertDept(d);
//update
// Dept d = new Dept();
// d.setDeptno(41);
// d.setDname("haha");
// d.setLoc("Seoul");
// dao.updateDept(d);
//delete
// dao.deleteDept(41);
//selectOne
Dept dept = dao.selectOne(80);
System.out.println(dept);
}
}
출처 : 삼성SDS멀티캠퍼스
강사 : 홍승길
Email : iccack70@gmail.com
'[Spring]' 카테고리의 다른 글
[Spring]11월 13일 Spring-jdbc 스프링 설정파일을 이용해 연동 예제(JdbcTemplate) (0) | 2015.11.24 |
---|---|
[Spring]11월 11일 Spring Aop설정을 어노테이션(annotation)을 이용한 예제 (1) | 2015.11.11 |
[Spring]11월 11일 Spring 설정 파일(xml) 기반 AOP 설정 예제 (0) | 2015.11.11 |
[Spring]11월 11일 Spring AOP용어, AOP 구현 방법, AOP 설정 태그 (0) | 2015.11.11 |
[Spring]11월 10일 Spring AOP 프록시패턴(Proxy pattern) 적용 예제 (0) | 2015.11.10 |