재미있게 코딩합시다

4.스프링(Spring)-NamedParameterJDBCTemplate 본문

IT /Spring(스프링)

4.스프링(Spring)-NamedParameterJDBCTemplate

감민셔 2019. 1. 4. 17:33

NamedParameterJDBCTemplate 적용하기


applicationContext.xml에 적용해줍니다.

package Dao;


import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Collections;

import java.util.HashMap;

import java.util.Map;


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 model.Dept;


public class DeptDao {

private NamedParameterJdbcTemplate jdbcTemplate;


public void setJdbcTemplate(NamedParameterJdbcTemplate jdbcTemplate) {

this.jdbcTemplate = jdbcTemplate;

}

public void insert(Dept dept) {

//여러개, 자바유틸

Map<String, Object> params = new HashMap<String,Object>();

params.put("deptno", dept.getDeptno());

params.put("dname", dept.getdName());

params.put("dloc", dept.getdLoc());

String sql = "insert into dept values"

+ "(:deptno, :dname, :dloc)";

jdbcTemplate.update(sql, params);

}

public void delete(int deptno) {

//한개, 자바유틸 이용

String sql = "delete from dept where deptno = :deptno";

jdbcTemplate.update(sql,

Collections.singletonMap("deptno", deptno));

}

public void update(Dept dept) {

//여러개, 스프링 라이브러리 키벨류 객체 쓰기

String sql = "update dept set dname = :dname"

+ "dloc = :dloc where deptno = :deptno";

BeanPropertySqlParameterSource params = 

new BeanPropertySqlParameterSource(dept);

jdbcTemplate.update(sql, params);

}

RowMapper<Dept> mapper = new RowMapper<Dept>() {


@Override

public Dept mapRow(ResultSet rs, int index) throws SQLException {

Dept dept = new Dept();

dept.setDeptno(rs.getInt("deptno"));

dept.setdName(rs.getString("dname"));

dept.setdLoc(rs.getString("dloc"));

return dept;

}

};

public Dept selectOne(int deptno) {

// 한개, 스프링라이브러리 이용

String sql = "select * from dept where deptno = :deptno";

MapSqlParameterSource param = 

new MapSqlParameterSource("daptno", deptno);

return jdbcTemplate.queryForObject(sql, param, mapper);

}

}


NamedparameterJdbcTemplate 은

select 해서 매퍼 이용해서 결과값 매핑하는거 JdbcTemplate랑 똑같습니다.

sql문에 파라미터를 매핑할때 이름을 기반으로 해서 매핑시킬수잇죠

Map과 비슷합니다.


Sql문을 작성할때 : 

숫자대신 이름을 적습니다.

그이름을 key값으로 그자리에 넣을 값을 value값으로 해서 맵으로 만들어서 날려줍니다.


앞의 "deptno"  ===> key값

뒤에 dept.getDeptno()   ==> value 값 


public void update(Dept dept) {

//여러개, 스프링 라이브러리 키벨류 객체 쓰기

String sql = "update dept set dname = :dname"

+ "dloc = :dloc where deptno = :deptno";

BeanPropertySqlParameterSource params = 

new BeanPropertySqlParameterSource(dept);

jdbcTemplate.update(sql, params);

}


 BeanPropertySqlParameterSource params = 

new BeanPropertySqlParameterSource(dept);


=====> 해당객체의 멤버변수를 key값으로 그멤버변수의 값을 vaule값으로 해서

key,values 쌍을 만들어줍니다.



Comments