간단하게 필요한 라이브러리에 대해서 설명 드리자면,

Mybatis 생산성/유지보수/성능/이식성을 향상 시키고, 간단하게 DB 사용을 지원 해주는 오픈소스입니다

Mybatis-spring는 하나의 모듈로써 Mybatis와 Spring를 연결 해주는 역할을 합니다.

jdbc는 자바와 데이터베이스의 연결을 해주는 역할을 합니다.

dbcp 디비의 연결을 미리 예측하고 일정 갯수의 connection을 유지하는것 입니다.(효율적인 db사용 가능)


첫 번째로 pom.xml 에 Mybatis, MyBatis-spring 을 추가 해주세요. 각 버젼 확인은 아래 url 에서 해주세요

Mybatis - https://mvnrepository.com/artifact/org.mybatis/mybatis

Mybatis-Spring - https://mvnrepository.com/artifact/org.mybatis/mybatis-spring

spring-jdbc - https://mvnrepository.com/artifact/org.springframework/spring-jdbc

spring-dbcp - https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp


저는 3.4.6(Mybatis) , 2.0.0(Mybatis-Spring), 5.0.0(spring-jdbc), 1.4(commons-dbcp) 을 사용 하겠습니다.



		
		
		
			org.mybatis
			mybatis-spring
			2.0.0
		

		
		
			org.mybatis
			mybatis
			3.4.6
		


		
		
			org.springframework
			spring-jdbc
			5.1.0.RELEASE
		

		
		
			commons-dbcp
			commons-dbcp
			1.4
		




라이브러리 등록이 완료되면 root-context.xml 파일을 설정해야 합니다. 이 파일은 웹과 관련 없는 나머지 객체(bean)을 설정 해줍니다.

원래는 web.xml 최초 서버가 실행될 때 이 파일을 참조 할 수 있게 설정을 해야 하는데, 스프링 프로젝트 생성시 자동으로 입력 됩니다.



	contextConfigLocation
	/WEB-INF/spring/root-context.xml



DB 연결하는 부분은 웹이 아니기 때문에 이부분에서 설정을 해줍니다. (웹은 servlet-context)

아래 항목 중 Namespace를 누르시면 Configure Namespaces 화면을 확인 하실 수 있습니다.

 aop, bean, context, mybatis-spring을 체크 해주세요. 체크를 하시면 아래 그림과 같이 자동으로 bean의 경로가 설정 됩니다.









자동 입력된 root-context.xml 파일에서 주석 밑에 DB접속 정보를 입력 해주시면 됩니다. 

mariadb 는 mysql jdbc를 이용해서 접근이 가능합니다. 찜찜하신 분들은 mariadb jdbc를 사용 해주시면 됩니다.

그리고 dataSource의 destory-method 는 bean 객체의 스코프가 종료될 때 선언된 클래스를 종료하기 위해 close()메소드를 실행 합니다.



	
	
	
      
      
      
      
      
   

   
	
      
      
      
	
    
    
	
      
	
 	



root-context.xml 에 데이터 베이스 관련 정보들을 입력 하신 다음에 아래와 같이 src/main/resources 폴더에

 config, mappers 폴더를 만들어 주세요.

config 폴더에는 mybatis-config.xml 파일을, mappers 폴더에는 testMapper.xml 파일을 생성 해주세요.

각 폴더 및 파일을 생성 하신 다음 아래 내용을 해당 파일에 복사해서 붙여 넣어주세요 !!!

원래 하나의 파일에 설정을 할 수 있지만 저는 다른 config 파일들이 추가 될 예정이라서 효율적인 관리를 위해 따로 등록 하였습니다.






이 두놈은 syntaxHighlight 가 도저히 먹히지 않습니다ㅠㅠ 


(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></configuration>



(testMapper.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="mapper">

  

  </mapper>









여기까지 스프링 프로젝트의 DB설정 및 Mybatis 연동이 끝났습니다.

다음 포스트 부터 실제 mybatis를 이용해서 데이터를 불러오고 입력하는 예제를 진행 해보겠습니다.

감사합니다 :)



스프링 프로젝트에 MariaDB 와 Mybatis를 연동 후 테스트 까지 해보겠습니다.

테스트 진행은 Maria DB의 테이블 및 테스트 칼럼이 샘플이 존재해야 합니다.

* 저는 testdb 테이블에 age 란 int형 칼럼이 존재 합니다.


첫 번째로, pom.xml 에 아래 dependency를 복사 및 붙여넣기 하세요.


*Mysql 과 Maria DB의 차이 ↓

http://gabrielyj.tistory.com/119?category=732269


		
		
			org.mariadb.jdbc
			mariadb-java-client
			1.1.7
		

		
		
			org.mybatis
			mybatis
			3.3.1
		

		
		
			org.mybatis
			mybatis-spring
			1.2.4
		

		
		
			org.springframework
			spring-jdbc
			${org.springframework-version}
		



그 다음 WEB-INF폴더 -> spring폴더 -> root-context.xml 파일을 열어준뒤,

Namespace 메뉴를 클릭합니다.

(아래를 참고하고 aop, context, jdbc, mybatis-spring을 추가해주세요)






Namespaces에서 추가가 완료되면,

아래 내용을 root-context.xml 에 추가 해주세요.

url 의 jdbc:mysql:// 이후로는 사용하시는 IP와 포트 번호를 입력 해주시고,

username 과 password 는 각각 ID와 PW를 입력 해주시면 됩니다.

* 로컬 DB를 사용하시는분은 (jdbc:mysql://localhost:8080/DB이름) 을 입력 하시면 됩니다. 

* 혹시 localhost 인데 포트번호가 8080 아니면 해당되는 포트번호를 꼭 입력 하셔야 합니다.



   
   
      
      
      
      
      
   

   
   
  



그 다음 Java Resources 폴더-> src/main/resources 폴더 내부에

mappers 패키지 생성 후 그 안에 testMapper.xml 을 생성하고,

그 외부에 mybatis-config.xml 파일을 추가로 생성합니다.






testMapper.xml (DB 쿼리문을 작성하는 부분입니다.)








	


mybatis-config.xml (이 부분은 테스트 하는 동안 수정할 필요 없습니다.입력만 잘해주세요.)










그 다음 추가로 Java Resources 폴더-> src/main/resources 폴더 내부에

mybatisUtil 이란 패키지를 생성하고,

인터페이스 TService 와 클래스 TServiceImpl를 생성해줍니다.

이 부분은 컨트롤러와 mapper 사이를 연결해주는 부분입니다.


SqlSession을 Inject 해주고,

namespace 에는 *Mapper.xml 내에서 사용하는 이름과 똑같아야 합니다.




인터페이스 TService (in mybatisUtil package)

package mybatisUtil;
public interface TService {
	public int test();
}


클래스 TServiceImpl (in mybatisUtil package)

package mybatisUtil; import javax.inject.Inject; import org.apache.ibatis.session.SqlSession; import org.springframework.stereotype.Service; @Service public class TServiceImpl implements TService { @Inject private SqlSession sqlSession; private static final String namespace = "my.mappers.testMapper"; @Override public int test() { return sqlSession.selectOne(namespace + ".selectTest"); } }




이제 다시 root-context.xml 로 돌아가서 아까 입력 안한 2, 3번째 부분을 완성니다.

주의할 점은, mapperLocations 부분 부터

Mapper, Service, ServiceImpl 이 일치하지 않으면, 404에러 발생합니다.

404에러가 발생하면 꼭 *Mapper.xml 부터 절차적으로 확인 해보세요!




   
   
      
      
      
   

   
   

      
   

   




이렇게 DB연동 작업은 끝났습니다.

마지막으로 controller 에서 실행을 하면 됩니다.


Service 부분을 @Autowired 어노태이션을 입력 하여 TService 를 등록 해주시고,

ModelAndView형 메소드를 만들어 그 안에 test() 메소드를 실행 해줍니다.

*저는 바로 int 형으로 반환을 받고 뿌려주기 위해 int 형으로 선언 하였습니다.

그리고 addObject 메소드를 이용하여 mav 객체에 담아주고,

setViewName 메소드를 이용해 호출되는 페이지명도 담아줍니다.

* test.jsp 를 불러올것이기 때문에 test를 담았습니다.




package controller;

import javax.servlet.ServletException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import mybatisUtil.TService;

@Controller
public class TestController {
	
	@Autowired
	private TService tDAO;
	
	@RequestMapping(value = "/test.do")
	public ModelAndView portList(ModelAndView mav) throws ServletException {
		
		int test = tDAO.test();
		
		mav.addObject("test", test);
		mav.setViewName("test");
		return mav;
	}
}



마지막으로 아래를 참고하여 test.jsp 를 생성해줍니다.

그 다음 EL문을 이용하여 ${test}를 입력 합니다

* 위에서 addObject 할 때 이름을 'test'로 했기 때문에 ${test}


그리고 !!!


http://localhost:8080/프로젝트명/test.do   <- 접속하세요

이 부분이 말끔히 실행되려면, servlet-context.xml 부분의

preffix="/" suffix=".jsp" 입니다.

그래서 위에 setViewName 으로 넘어온 test가 /test.jsp 가 됩니다.


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	${test}






최종 결과 : 저는 DB에 입력된 age 값이 '10' 이였습니다.

 





04번에 이어 Mybatis 까지 설정하고, 테스트 해보는 부분입니다.

<MariaDB 7가지의 테이블과 필드가 존재한다는 가정하에 진행합니다>


우선 pom.xml 에 부분에 해당 dependency 를 추가 해줍니다.

그러면 자동으로 라이브러리를 추가 해줍니다.

 

                 
		
			org.mybatis
			mybatis
			3.3.1
		

		
		
			org.mybatis
			mybatis-spring
			1.2.4
		

		
		
			org.springframework
			spring-jdbc
			${org.springframework-version}
		

		
			org.springframework
			spring-test
			${org.springframework-version}
		

 

 그리고 Mybatis 의 Dependency 도 추가 해줍니다.



 

   

** 환영합니다 !!! _ MVC_Member Test **

[ memberList ]



	

** memberList [MVC_model2] **

id pw name email phoneNumber joinDate userLevel
${member.id} ${member.pw} ${member.name} ${member.email} ${member.phoneNumber} ${member.joinDate} ${member.userLevel}








2019년 3월에 새롭게 스프링 프로젝트 생성, 초기설정을 포스팅 하였습니다.

훨씬 더 자세하게 설명 되어 있습니다. 아래 링크를 참고 해주세요 :)

https://gabrielyj.tistory.com/166?category=735500













프로젝트 우클릭 → Properties → Project Facets →  Java 버젼 설정 및 Runtime 서버 등록.







pom.xml 에서 원하는 내용 및 등록 해줌

프로젝트 생성 직후에는 자바 버젼 및 스프링 프레임 워크 버젼만 설정해줘도 괜찮아요


	
		1.8
		4.2.4.RELEASE
		1.6.10
		1.6.6
	



막 프로젝트가 완성 되었다면 이정도 설정으로 충분하고,

다음 Mybatis 떄부터 복잡하고 중요해집니다ㅜㅜ






	
 	
		index.jsp
		


 	
	
		contextConfigLocation
		/WEB-INF/spring/root-context.xml
	
	
	
		org.springframework.web.context.ContextLoaderListener
	

	
	
		characterEncoding
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
	
	
		characterEncoding
		*.do
	


	
	
		action
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
			/WEB-INF/config/presentation-layerbiz.xml
		
	
		
	
		action
		*.do
	







+ Recent posts