상세 컨텐츠

본문 제목

Spring - DB 출력하기 예제

03_Language

by 에스프리터 2018. 3. 30. 18:27

본문




오늘의 예제는 JAVA 스프링에서 기본적으로 제공하는 방법을 활용하여 MySQL에 접속하여 DB를 출력하는 방법을 알아보겠습니다. 파일 구조는 아래와 같습니다. Spring 구조를 설명하고 진행을 해야 될 것 같은데 일단은 맛보기로 예제만 보여드리고 추후에 다시 spring에 대해서 설명하도록 하겠습니다. SQL은 기존의 sangdata를 사용하도록 하겠습니다. 파일 구조는 아래와 같습니다.




<파일명 : DbMain.java >
package pack;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DbMain {
    public static void main(String[] args) {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("init.xml");
        BusinessInter inter =
                (BusinessInter)context.getBean("businessImpl");
            inter.dataList();
    }
}
<파일명 : BusinessImpl.java >
package pack;
public class BusinessImpl implements BusinessInter{
    private SangpumInter sangpumInter;
    
    public void setSangpumInter(SangpumInter sangpumInter) {
        this.sangpumInter = sangpumInter;
    }
    
    
    
    @Override
    public void dataList() {
        for(SangpumDto s:sangpumInter.selectList()) {
            System.out.println(s.getCode() + " " +
                    s.getSang() + " " +
                    s.getSu() + " " +
                    s.getDan());
        }
    }
}

<파일명 : BusinessInter.java >
package pack;
public interface BusinessInter {
    void dataList();
}

<파일명 : DataSource.java >
package pack;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class DataSource extends DriverManagerDataSource{
    public DataSource() {
        setDriverClassName("org.mariadb.jdbc.Driver");
        setUrl("jdbc:mysql://localhost:3306/test");
        setUsername("root");
        setPassword("123");
        
    }
}

<파일명 : SangpumDto.java >
package pack;
public class SangpumDto {
    private String code,sang,su,dan;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getSang() {
        return sang;
    }
    public void setSang(String sang) {
        this.sang = sang;
    }
    public String getSu() {
        return su;
    }
    public void setSu(String su) {
        this.su = su;
    }
    public String getDan() {
        return dan;
    }
    public void setDan(String dan) {
        this.dan = dan;
    }
}

<파일명 : SangpumImpl.java >
package pack;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

//스프링이 제공하는 JDBC 방법
public class SangpumImpl extends JdbcDaoSupport implements SangpumInter{
    
    public SangpumImpl(DataSource dataSource) {
        super.setDataSource(dataSource);
    }
    
    @Override
    public List<SangpumDto> selectList() throws DataAccessException {
        RowMapper rowMapper = new SangRowMapper();
        return getJdbcTemplate()
                .query("select * from sangdata", rowMapper);
    }
    
    class SangRowMapper implements RowMapper{
        @Override
        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
            // select 실행결과를 한 레코드 단위로 전달받아 처리
            System.out.println("rowNum : " + rowNum);
            SangpumDto dto = new SangpumDto();
            dto.setCode(rs.getString("code"));
            dto.setSang(rs.getString("sang"));
            dto.setSu(rs.getString("su"));
            dto.setDan(rs.getString("dan"));
            return dto;
        }
    }
}

<파일명 : SangpumInter.java >
package pack;

import java.util.List;
import org.springframework.dao.DataAccessException;

public interface SangpumInter {
    List<SangpumDto> selectList() throws DataAccessException;
}

<파일명 : init.xml >
<?xml version="1.0" encoding="UTF-8"?>
    
    <!--
    <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>org.mariadb.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost:3306/test</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>123</value>
        </property>
    </bean>
    
    <bean id="sangpumImpl" class="pack.SangpumImpl">
        <property name="dataSource" ref="ds" />
    </bean>
     -->
    
     <!-- DataSource에서 불러오는 방법도 사용 가능 -->
     <bean id="ds" class="pack.DataSource"/>
    <bean id="sangpumImpl" class="pack.SangpumImpl">
        <constructor-arg ref="ds"/>
    </bean> 
    
    <bean id="businessImpl" class="pack.BusinessImpl">
        <property name="sangpumInter" ref="sangpumImpl"/>
    </bean>
</beans>



[ 결과 이미지]




[Github 안내] 
- Github에서 파일을 확인하시려면 바로가기를 눌러주세요.
- 해당 예제는 espriter_practice/'espriter_app08_db' 에 있습니다.


본 포스팅은 KIC 캠퍼스에서 박영권 강사의 지도하에 공부하며 작성한 리포트입니다.
혹시 잘못된 내용이 있거나 문제 소지시 댓글 남겨주시면 조치하겠습니다.


태그

관련글 더보기

댓글 영역