각진 세상에 둥근 춤을 추자

[Spring] MyBatis 설정 + DB 연결 본문

Spring

[Spring] MyBatis 설정 + DB 연결

circle.j 2023. 1. 5. 19:32

 

1. MyBatis

  • MyBatis는 객체와 SQL을 자동 Mapping을 지원하는 ORM 프레임워크
  • MyBatis는 SQL을 별도의 파일로 분리해서 관리하고,  객체-SQL 사이의 파라미터 Mapping 작업을 자동으로 해주기 때문에 가장 많이 사용하는 ORM 기술
  • MyBatis는 Hibernate나 JPA처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담이 없이, 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다는 장점
  • 가장 간단한 ORM Framework로 복잡한 JDBC 코드 대신 MyBatis API로 SQL 수행

 


2. MyBatis 주요 컴포넌트

 

 


3. Maven Project 생성

- 마우스 우클릭 - New - Other - Maven Project - (체크 해제) Create a simple project

 

- Catalog: Internal 선택 → Filter: web 검색 → org.apache.maven.archetypes maven... 클릭 

 

  • Group Id: kr.co.ch05
  •  Artifact Id: Ch05
  • Pacakage: kr.co.ch05

 


4.  설정 - (1) Tomcat 라이브러리 추가

- 프로젝트 마우스 우클릭 - Properties - Java Build Path - Libraries - Add Libraray

 

- Server Runtime - Apache Tomcat v9.0

 


4.  설정 - (2) pom.xml 

 

- MyBatis

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.11</version>
</dependency>

 

- MyBatis Spring » 3.0.1

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.1</version>
</dependency>

 

- Spring JDBC » 5.3.24

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.24</version>
</dependency>

 

- MySQL Connector Java » 8.0.31

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.31</version>
</dependency>

 

- Apache Commons DBCP

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.9.0</version>
</dependency>

 

- pom.xml 전체 코드

<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>kr.co.ch05</groupId>
  <artifactId>Ch05</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Ch05 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
	<dependencies>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.24</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.24</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.19</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.24</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.9.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>	

</dependencies>
  <build>
    <finalName>Ch05</finalName>
    <plugins>
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<version>3.3.1</version>
		</plugin>
	</plugins>
  </build>
</project>

 


4.  설정 - (3) web.xml 

 

(src - main - webapp - WEB-INF - web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Ch05</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
  
  <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-context.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>app</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <!-- 인코딩 필터 -->
    <filter>
    	<filter-name>characterEncodingFilter</filter-name>
    	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    	<init-param>
    		<param-name>encoding</param-name>
    		<param-value>UTF-8</param-value>
    	</init-param>
    </filter>
    
    <filter-mapping>
    	<filter-name>characterEncodingFilter</filter-name>
    	<url-pattern>/*</url-pattern>
    </filter-mapping>
    
</web-app>

 


4.  설정 - (4) spring-context.xml

(src/main/java - src/main/resources - spring-context.xml 생성)

<!-- 데이터베이스(커넥션풀) 등록 설정 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/[DB 이름]" />
    <property name="username" value="[DB 사용자 이름]" />
    <property name="password" value="[DB 사용자 암호]" />
</bean>
<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
        

    <!-- 컴포넌트를 스프링 컨테이로 등록하기 위한 태그 선언 -->
    <context:component-scan base-package="kr.co.ch05"/>

    <!-- 스프링 MVC 처리를 위한 어노테이션 태그 선언 -->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!-- viewResolver 등록 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="prefix" value="/WEB-INF/views/"/>
    	<property name="suffix" value=".jsp"/>
    </bean>

    <!-- 데이터베이스(커넥션풀) 등록 설정 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/java2db" />
        <property name="username" value="root" />
        <property name="password" value="1234" />
    </bean>

    <!-- MyBatis 컨테이너 등록 설정 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    	<property name="dataSource" ref="dataSource"></property>
    	<property name="configLocation" value="classpath:mybatis-context.xml"></property>
    </bean>

    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    	<constructor-arg ref="sqlSessionFactoryBean"></constructor-arg>
    </bean>

</beans>

 


4.  설정 - (6) MyBatis Mapper 파일 설정

(src/main/java - src/main/resources - mybatis-context.xml 생성)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <mappers>
    <mapper resource="./mappers/user1.xml"/>
  </mappers>
</configuration>

 

(src/main/java - src/main/resources - mappers 폴더 생성 - user1.xml (매핑 파일) 생성)

 

 

다음 글

[Spring] MyBatis (간단) 회원 정보 입력, 목록, 수정, 삭제

 

[Spring] MyBatis (간단) 회원 정보 입력, 목록, 수정, 삭제

이전 글 참고 2023.01.05 - [Spring] - [Spring] MyBatis 설정 + DB 연결 [Spring] MyBatis 설정 + DB 연결 1. MyBatis MyBatis는 객체와 SQL을 자동 Mapping을 지원하는 ORM 프레임워크 MyBatis는 SQL을 별도의 파일로 분리해서

this-circle-jeong.tistory.com