이번 포스팅의 목표는 db연결 및 log4sql을 통한 sql query 출력입니다.
접속 DB는 mysql을 기준으로 합니다.(Oracle도 크게 다르지 않습니다.)
앞서서 기본 화면 까지 호출되었다는 가정하에 진행합니다.
1. pom.xml 에 db관련 라이브러리 추가.
<!-- DB -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.0.2</version>
</dependency>
2. 프로젝트 우클릭 Run As -> Maven Install
3. src/main/resources 폴더에 conf 폴더 생성 후 db.properties 파일을 생성 후 아래와 같이 작성
(빨간색 부분은 본인 설정에 맞게 설정하시면 됩니다)
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/스키마
db.username=아이디
db.password=패스워드
3. mysql 접속 후 테이블 생성 후 샘플데이터 insert
create table member(
id_no INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
login_id VARCHAR(20) NOT NULL,
login_pw CHAR(64) NOT NULL
);
insert into member (login_id, login_pw)
values ('admin', password('admin1234'));
4. src/main/resources 폴더에 sql 폴더 생성 후 member.xml 파일을 생성 후 아래와 같이 작성
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="member">
<select id="getMember" resultType="hashMap">
select * from MEMBER
</select>
</mapper>
5. src/main/webapp/WEB-INF/spring/root-context.xml 파일에 db관련 설정사항 추가
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- db setting -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:conf/db.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:sql/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
6. HomeController.java 파일에 해당 컨트롤러 쿼리 조회문 추가 후 데이터를 제데로 불러오는지 확인.
1개의 데이터를 insert했으니, 총 결과건수 1나오면 정상
package com.dparts.com;
import java.util.List;
import java.util.Locale;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
private SqlSession sqlSession;
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
List list = sqlSession.selectList("getMember");
logger.info("ListCount = {}.", list.size());
return "home";
}
}
--> 결과..
INFO : com.dparts.com.HomeController - ListCount= 1.
7.정상적으로 db접속 후 조회 해오는걸 확인했으니, log4sql을 사용해 쿼리 로그를 확인한다.
-> log4sql란 jdbc를 이용하여 DB에 동작하는 쿼리로그를 찍어주는 라이브러리.
http://log4sql.sourceforge.net/ 사이트에서 다운받을수 있다.
사용법이 매우 간단하나 가급적이면 개발서버에서만 적용하고 실제 운영서버에서는 사용하지 않는것을 권장.
src/main/webapp/WEB-INF/lib 폴더를 생성 후 다운받은 log4sql.jar 파일을 추가한다.
3번에서 작성했던 db.properties에서 아래와 같이 변경 후 WAS를 재기동
db.driverClassName=com.mysql.jdbc.Driver
를 아래와 같이 변경
db.driverClassName=core.log.jdbc.driver.MysqlDriver
6번 동작을 다시한번 해보면 console창에 쿼리가 나오는것을 확인할 수 있다.
결과 >>
[2015-08-02 15:36:40] [DEBUG]『org.apache.ibatis.executor.statement.RoutingStatementHandler:query(55)』 Elapsed Time [0:00:00.000]
select
*
from
MEMBER
[2015-08-02 15:36:40] [DEBUG]『org.apache.ibatis.executor.statement.PreparedStatementHandler:query(40)』 Elapsed Time [0:00:00.000]
select
*
from
MEMBER
Query Result[]: -1row
INFO : com.dparts.com.HomeController - ListCount = 1.
그런데 select쿼리에 경우 두번씩 나온다.. 이건 나중에 해결하도록 하고..
여기까지 했으면 기본적인 DB접속 및 쿼리 조회까지 완료
'개발' 카테고리의 다른 글
[centos] yum install usage (0) | 2019.03.09 |
---|---|
1. STS를 이용한 기본 웹개발 환경 구축 (0) | 2015.07.17 |
0. Spring으로 쇼핑몰 만들기 Orientation (0) | 2015.07.17 |
[angularjs] 하위 directive에 함수 호출하기 (0) | 2015.03.27 |
npm install -g yo 설치시 에러 대처방법 (0) | 2015.03.20 |