오늘은 스프링 프레임워크를 구축한 후 MySql을 연동하는 방법을 알아보도록 하겠습니다.
스프링 프레임워크 구축 방법은 이전 글을 참고하시기 바랍니다.
1. pom.xml 설정
2. web.xml 설정
3. dao.java 추가
4. mapper.xml 추가
5. sql-map-config.xml 추가
6. context 파일 추가(db/sql)
7. controller, service 설정
제가 테스트 시 사용했던 폴더 트리입니다.
1. pom.xml 설정
pom.xml 파일에 DB 관련 dependency 추가해줍니다.
파일을 저장하면 자동으로 업데이트합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>testProject</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>testProject Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>4.0.1.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- DB -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
<!-- DB -->
</dependencies>
<build>
<finalName>testProject</finalName>
</build>
</project>
|
cs |
2. web.xml 설정
web.xml 파일에 context 경로를 미리 지정해줍니다.
context 파일은 뒤에 생성하도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 추가 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!--
context파일 경로설정
나중에 context파일 생성 후 경로를 지정해주면 됩니다.
-->
classpath*:testProject/spring/context-*.xml
</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/dispatcher-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
|
cs |
3. dao.java 추가
공통으로 사용할 dao 자바 파일을 생성합니다.
필요시 사용하는 파일로 sqlSession 관리하고 insert, update, delete, select 별로 함수로 만들어두고 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
package springTest.com.test.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class CommonDAO {
@Autowired
private SqlSession sqlSession;
public void setSqlSessionTemplate(SqlSession sqlSession)
{
this.sqlSession = sqlSession;
}
// insert DAO
public int insert(String xmlId, Map<String, Object> paramMap)
{
return sqlSession.insert(xmlId, paramMap);
}
// update DAO
public int update(String xmlId, Map<String, Object> paramMap)
{
return sqlSession.update(xmlId, paramMap);
}
// delete DAO
public int delete(String xmlId, Map<String, Object> paramMap)
{
return sqlSession.delete(xmlId, paramMap);
}
// select_one DAO
public Map<String, Object> selectOne(String xmlId, Map<String, Object> paramMap)
{
Map<String, Object> map = sqlSession.selectOne(xmlId, paramMap);
if (map == null) {
return null;
} else {
return map;
}
}
// select_list DAO
public List<Object> selectList(String xmlId, Map<String, Object> paramMap)
{
List<Object> list = sqlSession.selectList(xmlId, paramMap);
if (list == null) {
return null;
} else {
return list;
}
}
}
|
cs |
4. mapper.xml 추가
쿼리를 작성해둘 mapper를 생성합니다.
mapper namespace에는 mapper의 별칭을 입력하고 쿼리 별 태그의 id는 본인이 쉽게 파악할 수 있는 id로 입력하는 것이 좋습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?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="testProjectMapper">
<select id="selectTable" parameterType="map" resultType="list">
SELECT
IDX
, NAME
FROM
TEST_TABLE
</select>
</mapper>
|
cs |
5. sql-map-config.xml 추가
기본적인 설정을 하는 파일입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="cacheEnabled" value="false"/>
<setting name="useGeneratedKeys" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
<setting name="callSettersOnNulls" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="map" type="java.util.Map"/>
</typeAliases>
</configuration>
|
cs |
6. context xml 파일 추가
context-datasource.xml
MySql 정보 및 기본적인 설정을 입력하는 파일입니다.
property name에서 url, username, password 항목에 본인의 DB정보를 올바르게 입력합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://yourIP:yourPORT/DBschema"/>
<property name="username" value="yourID"/>
<property name="password" value="yourPW"/>
<property name="removeAbandoned" value="true"/>
<property name="initialSize" value="20"/>
<property name="maxActive" value="30"/>
<property name="validationQuery" value="select 1"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="7200000"/>
</bean>
</beans>
|
cs |
context-sqlMap.xml
mapper와 map config파일의 경로를 지정해주는 파일입니다.
본인이 생성한 파일의 경로를 지정해줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:testProject/sqlmap/mapper/*.xml"/>
<property name="configLocation" value="classpath:testProject/sqlmap/config/sql-map-config.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
</beans>
|
cs |
7. controller, service java 파일 설정
controller와 service 파일을 생성합니다.
콘솔을 통해 DB 연동 확인만 해보는 테스트이기 때문에 저번에 테스트한 url 컨트롤러에 service 클래스의 메소드를 호출하는 코드만 추가하도록 하겠습니다.
TestController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class TestController {
@Autowired private TestService testService;
@RequestMapping(value="/urlTest", method={RequestMethod.GET, RequestMethod.POST})
public String urlTest() {
testService.dbtest();
return "/test/testView";
}
}
|
cs |
TestService.java
공통 DAO의 메소드를 호출하는 부분에서는 앞서 mapper.xml에서 설정한 namespace와 쿼리의 id를 조합하여 문자열로 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import springTest.com.test.dao.CommonDAO;
@Service
public class TestService {
@Autowired private CommonDAO commonDAO;
public void dbtest() {
Map<String, Object> tempMap = new HashMap<String, Object>();
List<Object> resultList = new ArrayList<Object>();
resultList = commonDAO.selectList("testProjectMapper.selectTable", tempMap);
System.out.println(resultList);
}
}
|
cs |
콘솔을 통해 DB 테이블에 있는 내용이 resultList에 잘 들어갔는지 확인해보시기 바랍니다. ^^
'IT, 개발 > JAVA' 카테고리의 다른 글
자바 파일 전송 - JSch을 활용한 SFTP 파일 업로드 (0) | 2022.03.05 |
---|---|
ServerSocket Socket 통신(Server/Client 메시지 주고받기 예제) (0) | 2022.03.02 |
Logback 설정 파일 경로 지정 logback.xml 위치 변경 (0) | 2022.02.07 |
JAVA - 싱글톤(Singleton) 패턴 getinstance 사용법 예제 (0) | 2022.01.26 |
JAVA Thread - CountDownLatch 사용하여 작업 순서 설정하기 (0) | 2021.12.23 |