230382 SPRING_Legacy_Project_Mybatis(MariaDB)

Myung A Lee·2023년 3월 28일
0

Spring

목록 보기
1/6
post-thumbnail

Spring Legacy Project

Project 생성 순서

    1. 기본 생성 후 실행
    1. java version 설정 (pom.xml)
    1. 패키지 생성 (controller, service, dao, dto)
    1. 라이브러리 등록 후 실행
    1. 웹 상에서 한글 깨짐 방지 (web.xml)
    1. DB 연결 (servlet-context.xml)
    1. Mybatis Mapper

1. Project 기본 생성 후 실행

  • [NEW]-[Spring Legacy Project]
  • Package 설정
  • 생성시 기본 구성
  • 실행
  • pageEncoding 및 jqeury,c태그 설정 (home.jsp 파일 삭제 후 재 생성 추천)

2. java version 1.8 설정 (pom.xml)

  • java version과 1.8을 지원하는 spring version으로 변경

  • [Properties]-[Project Facets]-java 버젼 변경
  • 다음과 같이 적용됨을 확인

3. 패키지 생성 (controller, service, dao, dto)

  • 다음과 같은 패키지 설정을 기본으로 함

4. 라이브러리 등록 후 실행

  • 라이브러리에 대한 정보는 다음 사이트에서 가져올 수 있음
    https://mvnrepository.com/
  • 아래 내용을 다음 위치에 등록 (위치는 크게 상관 없음 이후 가독성을 위해 추가함을 표시)
<!-- 프로젝트를 위해 추가한 라이브러리 -->
		
		
		<!-- JDBC -->
		<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
		<dependency>
		    <groupId>org.mariadb.jdbc</groupId>
		    <artifactId>mariadb-java-client</artifactId>
		    <version>2.7.2</version>
		</dependency>

		
		<!-- common-dbcp -->
		<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
		<dependency>
		    <groupId>commons-dbcp</groupId>
		    <artifactId>commons-dbcp</artifactId>
		    <version>1.4</version>
		</dependency>

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

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

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

		
		<!-- 프로젝트를 위해 추가한 라이브러리 -->
  • 라이브러리 등록 후 꼭 충돌 확인 할 것

5. 웹 상에서 한글 깨짐 방지 (web.xml)

  • jsp 파일 상의 Encoding 과 별개로 웹상으로 데이터를 보내고 받을 때 Encording을 따로 해주어야 한다.
  • Filter : Controller 접근시 특정 요청에 대해서 어떤 Class와 연결 할 것인지 지정한다. 즉 컨트롤러로 넘어가지 전에 특정 요청에대해서 먼저 처리하고 넘어가는 것
  • 다음 내용 web.xml에 등록
<!-- Filter 등록 -->
	<filter>
		<filter-name>encodingFilter</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>
		<!-- 강제 인코딩 여부 -->
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	
	<!-- 어떤 요청이 왔을 때 어떤 필터를 쓸지 정해주기 -->
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

6. DB 연결 (servlet-context.xml)

  • servlet-context.xml 파일 위치
  • servlet-context.xml 다음 내용을 추가 (!주의 : 쿼리문 classpath가 존재해야함)
	<!-- DataSource 작성 (==접속정보) -->
	<beans:bean name="datasource" class="org.apache.commons.dbcp.BasicDataSource">
		<beans:property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
		<beans:property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
		<beans:property name="username" value="web_user"/>
		<beans:property name="password" value="pass"/>
	</beans:bean>
	
	<!-- Mybatis 설정 -->
	<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 연결할 DB 정보 -->
		<beans:property name="dataSource" ref="datasource"/>
		<!-- 쿼리문이 있을 장소 -->
		<beans:property name="mapperLocations" value="classpath:kr/co/gudi/dao/*.xml"/>
	</beans:bean>
	
	<!-- mybatis를 별다른 코드없이 사용할 수 있는 annotation 등록 -->
	<mybatis-spring:scan base-package="kr.co.gudi"/>

만약 DB 연동이 지정한 classpath 외에도 필요하다면 다음과 같이 list를 통해 가져올 수 있다.
<beans:property name="mapperLocations">
<beans:list>
<beans:value>classpath:kr/co/gudi/member/dao/.xml</beans:value>
<beans:value>classpath:kr/co/gudi/board/dao/
.xml</beans:value>
</beans:list>
</beans:property>
.
.
.

<mybatis-spring:scan base-package="kr.co.gudi.**.dao"/>

  • mybatis-spring:scan 오류 -> Namespaces 수정

7. Mybatis Mapper

  • dao package에 다음 내용을 추가
<!DOCTYPE mapper PUBLIC   "-//mybatis.org//DTD Mapper 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd"
>
  • mapper nemespace 지정
<!-- xml을 java에서 쓰기 위해 연결되는 interface가 필요하다. -->
<!-- 아래 MemberDAO 는 Interface : 생성 해주면 됨 -->
<mapper namespace="kr.co.gudi.dao.MemberDAO">
	
</mapper>
  • 사용할 sql문 작성 mapper nemespace 태그 안에 작성
	<!-- id="연결할 인터페이스의 메서드명" -->
	<!-- connection을 열고 ->PreparedStatement ->  '?'대응 -> 쿼리 실행 -> 자원 반납 -->
	<insert id="join" parameterType="hashmap">
		INSERT INTO member(id,pw,name,age,gender,email) 
		VALUES(#{id},#{pw},#{name},#{age},#{gender},#{email})
	</insert>
  • MemberDAO Interface는 다음과 같다.
package kr.co.gudi.dao;

import java.util.HashMap;

public interface MemberDAO {
	
	// 인터페이스이므로 추상메서드
	int join(HashMap<String, String> params);

}

0개의 댓글