※ 순서
1. pom.xml에 관련 라이브러리 추가하기
2. root-context.xml에 bean 설정하기
3. mybatis관련 config파일과 쿼리가 작성될 파일 생성하기
4. DB가 연동이 됐는지 테스트 하기
※ 구조
프로젝트의 구조는 아래와 같다.
※ 상세설명
1. pom.xml에 관련 라이브러리 추가하기
라이브러리는 <dependencies> </dependencies> 안에 추가해준다.
pom.xml
<!-- DB -->
<!-- Maria DB -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.0.3</version>
</dependency>
<!-- DBCP 데이터베이스 풀 커넥션 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
2. root-context.xml에 bean 설정하기
sqlSessionFactory의 configLocation은 Mybatis의 config파일의 위치를 지정해준다.
mapperLocation에는 쿼리가 작성될 파일들의 위치를 지정해준다. 아래 설정은 sql폴더 하위의 xml파일을 모두 매핑한다는 의미이다.
root-context.xml
<!-- DB -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="jdbc:mariadb://localhost:3306/데이터베이스명"></property>
<property name="username" value="아이디"></property>
<property name="password" value="비밀번호"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath*:/mybatis/sql/*.xml"></property>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
3. mybatis관련 config파일과 쿼리가 작성될 파일 생성하기
mybatis-config.xml파일은 설정관련 파일이고 sql폴더 안의 하위 xml 파일은 쿼리가 작성될 xml파일들이다.
mybatis-config.xml
<?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>
<!--
VO를 선언하여 mybatis/sql/하위의 쿼리들을 실행할때 resultType, parameterType에
풀 패키지명을 쓰지 않고 선언한 alias의 이름만 사용하여 VO를 주고 받을 수 있도록 해줌.
**** 예시 ****
mybatis/mybatis-config.xml
<typeAlias alias="TestVO" type="com.hee.heechart.VO.TestVO"></typeAlias>
mybatis/sql/test.xml
*alias를 선언했을 때
<select id="getShowroomList" resultType="TestVO" parameterType="TestVO">
SELECT * FROM TableName WHERE ColumnName = #{parameter}
</select>
*alias를 선언하지 않았을 때
<select id="getShowroomList" resultType="패키지명.TestVO"
parameterType="om.hee.heechart.VO.TestVO">
SELECT * FROM TableName WHERE ColumnName = #{parameter}
</select>
-->
<typeAliases>
<typeAlias alias="TestVO" type="com.hee.heechart.VO.TestVO"></typeAlias>
</typeAliases>
</configuration>
test.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="com.hee.heechart">
<select id="getTestValue" resultType="TestVO" parameterType="TestVO">
SELECT * FROM TEST WHERE TESTINPUT = #{testInput}
</select>
</mapper>
4. DB가 연동이 됐는지 테스트 하기
DB에 테스트용 테이블을 만들어 놓고 test.xml에 파라미터값으로 1이 들어가면 TestVO가 들어가있는 List가 리턴되고
그렇지 않으면 DB에서 조회가 되지 않기 때문에 빈 리스트가 리턴되도록 했다.
TestController.java
@Controller
public class TestController {
@Autowired
TestService TestService;
@RequestMapping(value ="goTestPage.do" , method = RequestMethod.POST)
public String goTestPage(Model model, HttpServletRequest request){
String testInput = (String)request.getParameter("testInput");
TestVO testVO = new TestVO();
testVO.setTestInput(Integer.parseInt(testInput));
List<TestVO> list = TestService.getTestValue(testVO);
if( list.size() > 0 ){
model.addAttribute("output", "Success_DB_Connection");
}else{
model.addAttribute("output", "Fail_DB_Connection");
}
return "test";
}
}
TestService.java
public interface TestService {
public List<TestVO> getTestValue(TestVO testVO);
}
TestServiceImpl.java
@Repository
public class TestServiceImpl implements TestService {
@Autowired
TestDAO TestDAO;
@Override
public List<TestVO> getTestValue(TestVO testVO){
return TestDAO.getTestValue(testVO);
}
}
TestVO.java
public class TestVO {
private int testInput;
private int testOutput;
public int getTestInput() {
return testInput;
}
public void setTestInput(int testInput) {
this.testInput = testInput;
}
public int getTestOutput() {
return testOutput;
}
public void setTestOutput(int testOutput) {
this.testOutput = testOutput;
}
}
TestDAO.java
@Repository
public class TestDAO {
@Autowired
private SqlSession SqlSession;
public List<TestVO> getTestValue(TestVO testVO){
return SqlSession.selectList("com.hee.heechart.getTestValue", testVO);
}
}
test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>test</title>
<script src="/resources/js/jquery/jquery-3.2.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var output = '<c:out value = "${output}"/>';
debugger;
if(output == "Success_DB_Connection"){
$("#result").text("디비 연결 성공");
}else if(output == "Fail_DB_Connection"){
$("#result").text("디비 연결 실패");
}
});
</script>
</head>
<body>
<p id="result"> 테스트 결과갑 출력 </p>
</body>
</html>
결과화면
'플밍 is 뭔들 > SPRING' 카테고리의 다른 글
[SPRING] DI 란...? (0) | 2017.11.20 |
---|---|
[SPRING] log4sql을 이용한 쿼리 로그 출력 (0) | 2017.07.05 |
[SPRING & GIT] 이클립스 / 스프링 프로젝트 GitHub(깃허브)와 연동하기 (0) | 2017.06.24 |
[SPRING] DispatcherServlet에 관하여... (0) | 2017.06.24 |
[SPRING] web.xml , root-context.xml , servlet-context.xml 에 관하여... (0) | 2017.06.21 |