탑크리에듀교육센터(www.topcredu.co.kr)제공
스프링프레임워크 & 마이바티스(Spring Framework, MyBatis)
17번째 자료입니다. 참고하시어 많은 도움되셨길 바랍니다.
교육 및 수강문의/기타문의사항은 홈페이지(www.topcredu.co.kr)를 통하여 하실 수 있습니다.^^
1. 스프링프레임워크 & 마이바티스
(Spring Framework, MyBatis)
4-3-2. Spring JDBC에서 DB 접근하는 방법 –
NamedParameterJdbcTemplate
이름없는 ? 대싞 이름을 부여해서 바인드 변수 처리가 가능하다.
public class PersonDao {
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Override
public void createPerson(Integer id, String firstname, String lastname) {
String SQL = "INSERT INTO person (id, firstname, lastname)
VALUES (:id, :firstname, :lastname)";
Map namedParameters = new HashMap();
namedParameters.put(“id", id);
namedParameters.put(“firstname", firstname);
namedParameters.put(“lastname", lastname);
namedParameterJdbcTemplate.update(SQL, namedParameters);
}
}
4-3-3. Spring JDBC에서 DB 접근하는 방법 - SimpleJdbcTemplate
JdbcTemplate의 모든 기능과 NamedParameterJdbcTemplate의 기능을 합친 것으로 자바5의
auto boxing과 varargs(String…args, 가변길이 매개변수) 기능을 포함하고 있다.
2. [JdbcTemplate Style]
public class PersonDao {
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public Person findPerson(Integer id, String lastname) {
String sql = "select id, firstname, lastname from PERSON where id = ? and lastname = ?";
RowMapper<person> mapper = new RowMapper<person>() {
public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
Person person = new Person();
person.setId(rs.getLong("id"));
person.setFirstName(rs.getString("firstname"));
person.setLastName(rs.getString("lastname"));
return person;
}
};
// SELECT인 경우 Mapper가 뒤에 오고 그 앞에 매개변수들을 객체배열에 담아 넘긴다.
// Person 타입으로 형 변환도 필요하다.
return (Person) jdbcTemplate.queryForObject(sql, new Object[] {id, lastname}, mapper);
}
[SimpleJdbcTemplate Style]
public class PersonDao {
private SimpleJdbcTemplate simpleJdbcTemplate;
public void setDataSource(DataSource dataSource) {
this. simpleJdbcTemplate = new SimpleJdbcTemplate (dataSource);
}
public Person findPerson(Integer id, String lastname) {
String sql = "select id, firstname, lastname from PERSON where id = ? and lastname = ?";
RowMapper<person> mapper = new RowMapper<person>() {
public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
Person person = new Person();
person.setId(rs.getLong("id"));
person.setFirstName(rs.getString("firstname"));
person.setLastName(rs.getString("lastname"));
return person;
3. }
};
// SELECT인 경우 Mapper가 쿼리문 다음에 오고 그 뒤에 가변길이 매개변수 형태로 넘기
는
// 객체배열 형태로 받는다. Person 타입으로 형 변환도 필요없다.
return simpleJdbcTemplate.queryForObject(sql, mapper, id, lastname);
}
4-3-4. Spring JDBC에서 DB 접근하는 방법 – SimpleJdbcCall
DataBase에 SQL로 만들어져 있는 저장함수, 프로시저를 다루기 위한 클래스로 최소한의 구
성으로 DB함수, Procedure에 접근할 수 있다.
오라클 서버쪽 패키지(Package) 및 함수(Function)
create or replace package types
as
type currtype is ref cursor;
end;
/
create or replace function getEmp(v_deptno in number) return types.currtype
AS
emp_cursor types.currtype;
sql_string VARCHAR2(500);
BEGIN
sql_string := 'SELECT empno, ename, sal FROM EMP WHERE DEPTNO = :1’ ;
OPEN emp_cursor FOR sql_string USING v_deptno;
RETURN emp_cursor;
CLOSE emp_cursor;
END;
/
New Project Spring Legacy Project
Project Name : springjdbc
Simple Projects : Simple Spring Maven