DB와 연동하기(MyBatis)
- 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.
- 이미지로 인해 글이 길어질 수 있습니다.
의존성 추가하기
- MyBatis 연동에 필요한 의존성을 pom.xml에서 dependencies 태그 안에 추가합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!-- mybatis 의존성 추가 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!-- mybatis-spring 의존성 추가 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- mysql-connector-java 의존성 추가 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!-- spring-jdbc 추가 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> | cs |
- 설치된 MySQL 버전이 8이상이라 mysql-connector-java의 버전을 8.0.11로 설정했습니다.
MyBatis 관련 정보 설정하기 - root-context.xml
- MyBatis 관련 정보를 설정하기 위해 root-context.xml 파일에 다음 항목들을 추가합니다.
네임스페이스 추가
- root-context.xml 파일을 열어 namespace 탭을 클릭합니다.
- aop, beans, context, jdbc, mybatis-spring 선택 후 저장합니다.
MySQL 정보 추가
- 해당 프로젝트에서 사용할 스키마이름(DB명)과 MySQL 계정아이디와 비밀번호를 입력하여 적용하면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 | <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- MySQL 버전에 따라 driverClassName의 value값이 달라짐 아래 코드는 Mysql 8기준 --> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <!-- MySQL 버전이 6인 경우 아래 코드 반영 --> <!-- <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> --> <property name="url" value="jdbc:mysql://localhost:3306/스키마이름?useSSL=false&serverTimezone=Asia/Seoul"> </property> <property name="username" value="MySQL계정아이디"></property> <property name="password" value="MySQL계정비번"></property> </bean> | cs |
- 예시
1 2 3 4 5 6 7 8 9 | <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/spring?useSSL=false&serverTimezone=UTC"> </property> <property name="username" value="green"></property> <property name="password" value="cjgreen"></property> </bean> | cs |
Mapper 설정
- mapperLocation의 value에 경로는 src/main/resources 폴더의 하위 경로입니다.
- 경로에 mappers를 입력했다면 resources에 mappers 폴더를 생성하면 됩니다.
1 2 3 4 5 | <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:경로/*Mapper.xml"></property> </bean> <mybatis-spring:scan base-package="맵핑할패키지이름"/> | cs |
- 예시
1 2 3 4 5 | <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property> </bean> <mybatis-spring:scan base-package="kr.green.spring.dao"/> | cs |
MyBatis 연동 확인하기
- 다음 작업은 오로지 연동을 확인하기 위한 작업으로 추후 메소드가 삭제되거나 수정될 수 있습니다.
MemberMapper 설정
- mappers 폴더에 MemberMapper.xml 파일 생성 후 아래 예시 코드 복사하여 붙여넣습니다.
1 2 3 4 5 6 7 8 9 | <?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="kr.green.spring.dao.MemberDAO"> <select id="getEmail" resultType="String"> select email from member where id = #{id} </select> </mapper> | cs |
MemberDAO 설정
- kr.green.spring.dao 패키지 생성 후 MemberDAO 인터페이스 생성 후 다음 코드를 추가합니다.
1 2 3 4 5 6 7 8 | package kr.green.spring.dao; import org.apache.ibatis.annotations.Param; public interface MemberDAO { public String getEmail(@Param("id")String id); } | cs |
MemberService 설정
- kr.green.spring.service 패키지 생성 후 MemberService 인터페이스와 MemberServiceImp 생성 후 다음 코드를 추가합니다.
- MemberService 인터페이스
1 2 3 4 5 6 | package kr.green.spring.service; public interface MemberService { public String getEmail(String id); } | cs |
- MemberServiceImp 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package kr.green.spring.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import kr.green.spring.dao.MemberDAO; @Service public class MemberServiceImp implements MemberService { @Autowired MemberDAO memberDao; @Override public String getEmail(String id) { return memberDao.getEmail(id); } } | cs |
HomeController 설정
- HomeController에 다음 메소드와 멤버 변수를 추가합니다. id에 입력한 문자열 "12345678"은 실제 DB에 있는 회원 정보이어야 합니다.
1 2 3 4 5 6 7 8 9 10 | @Autowired MemberService memberService; @RequestMapping(value="/") public ModelAndView main(ModelAndView mv) throws Exception{ mv.setViewName("/main/home"); mv.addObject("setHeader", "타일즈테스트"); System.out.println(memberService.getEmail("12345678")); return mv; } | cs |
- http://localhost:8080/spring/ 실행 후 콘솔창에 이메일이 출력되는지 확인하면 됩니다.
수고하셨습니다.!!