본문 바로가기
Spring

[스프링부트] 4.마이바티스 라이브러리 추가(연동)

by moca7 2024. 11. 6.

 

 

 

ㅁ 

- ~ 패키지 통으로 추가한다.

- 프로젝트 생성시 dependency를 추가할 수 있는 창이 떴었다.

그 창을 다시 띄운다.

- 패키지익스플로럴 우클릭 - spring - add starters 클릭

- mybatis 검색해서 나오는거 체크

- oracle 검색해서 sql안의 oracle driver 체크

 

 

 

 

 

 

 

 

- pom.xml 체크하고 finish.

 

 

 

 

ㅁ pom.xml

 

 
<?xml version="1.0" encoding="UTF-8"?>
 
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.11</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
 
  <groupId>com.br</groupId>
  <artifactId>boot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>boot</name>
  <description>Demo project for Spring Boot</description>
 
  <url/>
  <licenses>
    <license/>
  </licenses>
  <developers>
    <developer/>
  </developers>
  <scm>
    <connection/>
    <developerConnection/>
    <tag/>
    <url/>
  </scm>
 
  <properties>
    <java.version>17</java.version>
  </properties>
 
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
   
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
   
    <!-- jsp 사용을 위한 jasper 라이브러리 -->
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <!--<version>11.0.0</version>-->
    </dependency>
   
    <!-- jstl 사용을 위한 라이브러리들 -->
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <!--<version>6.1.0</version>-->
      <!--<scope>provided</scope>-->
    </dependency>

    <dependency>
        <groupId>jakarta.servlet.jsp.jstl</groupId>
        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        <!--<version>3.0.2</version>-->
    </dependency>
   
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        <!--<version>3.0.1</version>-->
    </dependency>
   
   
    <!-- BCryptPasswordEncoder 사용을 위한 라이브러리 -->
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <!--<version>5.7.5</version>-->
    </dependency>
   
    <!-- MyBatis, Oralce 관련 라이브러리-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>3.0.3</version>
    </dependency>
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc11</artifactId>
      <scope>runtime</scope>
    </dependency>
   
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter-test</artifactId>
      <version>3.0.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

 

starter가 붙은건 여러개가 모여있는 패키지 형태다.

 

 

 

 

 

 

 

src main resources에 mybatis 일반폴더 추가.

 

 

 

 

 

- 여기서 config는 필요없고 mappers 폴더만 가져온다.

 

 

 

 

 

 

 

 

 

ㅁ (스프링) root-context.xml

- root-context.xml에 마이바티스 사용을 위한 빈을 3개 등록했었다.

 

 

 

 

ㅁ application.properties

 

 
spring.application.name=boot

# contextPath 등록
# server.servlet.context-path=/boot

# 사용할 포트번호 수정
server.port=8888

# 응답뷰 관련한 prefix, suffix : servlet-context.xml의 ViewResolver 빈 등록 설정 대체
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# 마이바티스, 연결 db 정보 관련 구문 등록
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=spring
spring.datasource.password=spring
 

 

- 참고로 부트에서는 dbc2 커넥션 풀이 아니라 히카리를 쓴다. 이건 그냥 알고만 계세요.

 

- log4jdbc를 위한 설정도 해야 한다.

- 참고로 부트에서는 logback을 사용하겍므 등록이 되어 있따.

기존에 srpingweb할때는 ~를 ㅜ착했다.

- 근데 로그백은 부트에서 쓰게끔 이미 등록이 되어있다.

log4jdbc는 여러분이 별도로 추가해얗 나다.

 

 

 

 

 

ㅁ pom.xml

 

 
<?xml version="1.0" encoding="UTF-8"?>
 
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.11</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
 
  <groupId>com.br</groupId>
  <artifactId>boot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>boot</name>
  <description>Demo project for Spring Boot</description>
 
  <url/>
  <licenses>
    <license/>
  </licenses>
  <developers>
    <developer/>
  </developers>
  <scm>
    <connection/>
    <developerConnection/>
    <tag/>
    <url/>
  </scm>
 
  <properties>
    <java.version>17</java.version>
  </properties>
 
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
   
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
   
    <!-- jsp 사용을 위한 jasper 라이브러리 -->
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <!--<version>11.0.0</version>-->
    </dependency>
   
    <!-- jstl 사용을 위한 라이브러리들 -->
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <!--<version>6.1.0</version>-->
      <!--<scope>provided</scope>-->
    </dependency>

    <dependency>
        <groupId>jakarta.servlet.jsp.jstl</groupId>
        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        <!--<version>3.0.2</version>-->
    </dependency>
   
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        <!--<version>3.0.1</version>-->
    </dependency>
   
   
    <!-- BCryptPasswordEncoder 사용을 위한 라이브러리 -->
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <!--<version>5.7.5</version>-->
    </dependency>
   
    <!-- MyBatis, Oralce 관련 라이브러리-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>3.0.3</version>
    </dependency>
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc11</artifactId>
      <scope>runtime</scope>
    </dependency>
   
    <!-- log4jdbc 라이브러리 -->
    <dependency>
      <groupId>org.bgee.log4jdbc-log4j2</groupId>
      <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
      <version>1.16</version>
    </dependency>
   
   
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter-test</artifactId>
      <version>3.0.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

 

- log4jdbc 라이브러리를 작성한다.

자도완성이 안되면 mven가서 1.16버전으로 가져오면 된다.

 

 

 

 

 

 

 

- 저 두개를 resources에 복붙한다.

 

 

 

 

 

- 프로퍼티스 파일은 건들필요 없다. 그냥 있어야 하는 존재다.

- logback.xml은 수정해야 한다. 

base패키지가 지금 com.br.spring으로 되어 있다.

com.br.boot로 바꾼다.

두개 바꿨다.

 

 

 

 

 

 

 

 

 

ㅁ 여기까지 연결할 디비관련 정보를 작성했다.

 

 

 

 

======================================================================

 

 

 

 

ㅁ 추가로 마이바티스 관련 환경설정 문서도 있었다.

 

 

- (스프링) 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>

  <settings>
    <setting name="jdbcTypeForNull" value="NULL" />
  </settings>


  <typeAliases>
    <typeAlias type="com.br.spring.dto.BoardDto" alias="BoardDto" />  
    <typeAlias type="com.br.spring.dto.AttachDto" alias="AttachDto" />  
    <typeAlias type="com.br.spring.dto.MemberDto" alias="MemberDto" />  
    <typeAlias type="com.br.spring.dto.NoticeDto" alias="NoticeDto" />  
    <typeAlias type="com.br.spring.dto.ReplyDto" alias="ReplyDto" />  
  </typeAliases>

  <mappers>
    <mapper resource="mappers/board-mapper.xml" />
    <mapper resource="mappers/notice-mapper.xml" />
    <mapper resource="mappers/member-mapper.xml" />
  </mappers>


</configuration>

 

 

- 마이바티스 관련 세팅도 해야한다.

어던 패키지안의 클래스를 별칭을 ㅗ 부여할건지, 세팅을 어케할건지, 매퍼파일 경로는 뭔지를 다 작성해야 마이바티스가 작성한다.

 

 

 

 

 

ㅁ applicatio.preorpertis

 

 
spring.application.name=boot

# contextPath 등록
# server.servlet.context-path=/boot

# 사용할 포트번호 수정
server.port=8888

# 응답뷰 관련한 prefix, suffix : servlet-context.xml의 ViewResolver 빈 등록 설정 대체
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# 마이바티스, 연결 db 정보 관련 구문 등록
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=spring
spring.datasource.password=spring

# 마이바티스 관련 구문 등록 (기존의 mybatis-config.xml 파일 내용)
mybatis.mapper-locations=mybatis/mappers/*.xml
mybatis.type-aliases-package=com.br.boot.dto
mybatis.configuration.jdbc-type-for-null=NULL
 

 

 

- (첫번째 줄) *은 모든을 의미한다. 

이 한줄이 기존의 마이바티스 컨피그 문서에 등록했던 mappers 태그 5줄이다.

- (두번째 줄) 이 한줄이 typeAliases 태그 7줄이다.

- (세번째 줄) 이 한줄이 저 위의 3줄 대체하는 구문이다.

 

 

 

 

 

 

 

ㅁ 서버 start

 

 

- 문제 없어야 한다.

- 기존에 서버 start할 때와 로그가 달라졌다. 로그백으로 바뀌었다.

 

 

 

 

 

 

 

 

- http://localhost:8888를 입력해서 메인페이지를 요청한다.

 

- db연동도 됐으니 db조회나 insert 왠만한건 이제 다 된다.

- 일반, 공지게시판가서 데이터 조회가 잘 되는지 확인.

- 로그인, 마이페이지 수정기능 잘 되는지 확인.

- 글 작성도 된다. 그런데 첨부파일 업로드는 안된다.  

- 기존에 작성된 게시글의 첨부파일 다운은 된다.