복붙노트

[SPRING] spring3-annotation-JdbcDaoSupport

SPRING

spring3-annotation-JdbcDaoSupport

DAO에서 특수 효과 사용

@Repository("testDao")
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{

@Override
public Object addObject(String sqlid, Object obj) {
    // TODO Auto-generated method stub
    return null;
}

원인 : java.lang.IllegalArgumentException : 'dataSource'또는 'jdbcTemplate'이 필요합니다.

나는 사용하고 싶지 않다 :

<bean id="termsDao" class="com.manage.base.dao.impl.TestDaoImpl">
    <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

이 코드는 xml로 설정되고 "jdbcTemplate"은 다른 "spring-xml"에 정의되었습니다.

주석으로이 문제를 해결하는 방법 : " 'dataSource'또는 'jdbcTemplate'이 필요합니다."

해결법

  1. ==============================

    1.아래 접근법 중 하나를 사용할 수 있습니다. 첫 번째는 public 인터페이스에서 SpringFramework 클래스를 노출시키지 않기 때문에 데이터 소스를 사용하는 것이 좋습니다. 둘 다 작동합니다.

    아래 접근법 중 하나를 사용할 수 있습니다. 첫 번째는 public 인터페이스에서 SpringFramework 클래스를 노출시키지 않기 때문에 데이터 소스를 사용하는 것이 좋습니다. 둘 다 작동합니다.

    @Repository("testDao")
    public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{
    
      @Autowired
      TestDaoImpl(DataSource dataSource) {
        setDataSource(dataSource);
      }
    }
    

    또는

    @Repository("testDao")
    public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{
    
      @Autowired
      TestDaoImpl(JDBCTemplate template) {
        setJdbcTemplate(template);
      }
    }
    
  2. ==============================

    2.심지어 DAO에 대한 생성자로 데이터 소스를 삽입하는 것이 불필요한 코딩 단계라고 생각합니다. JDBC 설정 XML에 데이터 소스를 삽입하여 JDBC 템플릿에 삽입하지 않고 jdbctTemplate을 얻는 것이 좋습니다. 모든 DAO의 객체.

    심지어 DAO에 대한 생성자로 데이터 소스를 삽입하는 것이 불필요한 코딩 단계라고 생각합니다. JDBC 설정 XML에 데이터 소스를 삽입하여 JDBC 템플릿에 삽입하지 않고 jdbctTemplate을 얻는 것이 좋습니다. 모든 DAO의 객체.

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    and let your DAO extend JDBCSupport class.
    
    public class PersonDao extends JdbcDaoSupport{
    public List<Person> selectAll(){
        String selectAllSql = "SELECT * FROM PERSON;";
    
        return getJdbcTemplate().query(selectAllSql, new PersonRowMapper());
    

    ........ }

    }

    전체 예제 : http://www.studytrails.com/frameworks/spring/spring-jdbc-dao-support.jsp

  3. from https://stackoverflow.com/questions/10570521/spring3-annotation-jdbcdaosupport by cc-by-sa and MIT license