MyBatis+MySQL+Spring連用


二つのブログを参考に記事を書いた。


https://kuzuro.blogspot.com
https://all-record.tistory.com
▲参考ブログ

1.基本設定


プロジェクトを作成したら、Propertisを右クリック→
Project FacetsでJava 1.8を変更する
続いて韓国文化の仕事を行います
src/main/WEB-INF/web.xmlに入ってコードを入れてください.
<!--  문자 인코딩  시작 -->
<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>
<!--  문자 인코딩  끝 -->

2.ライブラリの設定


pom.xmlに入ったらjavaバージョンとspringフレームワークバージョンを変更します

pom.xmlでライブラリを設定します.

  • MySQL:MySQLライブラリ

  • MyBatis:MyBatisフレームワーク

  • MyBitis-spring:springとMybatisを接続するライブラリ

  • Spring-jdbc:jdbcライブラリ

  • Spring-test:スプリングとMybatisがバインドされているかどうかを確認します
  • junitバージョンを4.12に変更
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
    
        <!-- MyBatis 3.4.1 -->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
    
    
        <!-- MyBatis-Spring -->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
    
        <!-- Spring-jdbc -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
    
        <!-- Spring-test -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
    
    	<!-- Mybatis log -->
        <!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
            <version>1.16</version>
        </dependency>
    ▲ pom.xmlコード
    pom.xml設定が完了したらroot-context.xmlに移動
    Namespacesエントリをクリック

    ▲検査
    やり直しroot-contextxmlのソースコードを返します.
    DataSourceはMySQLへの接続を担当します.DataSourceはJDBC接続を扱う機能があるので、DBに関する作業が必要です.
    <?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:aop="http://www.springframework.org/schema/aop"
    	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
    		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
    		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
    	
    	<!-- Root Context: defines shared resources visible to all other web components -->
    		
    	   <!-- MySQL dataSource -->
      <!--
        <bean id="dataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
            <property name="url"
                value="jdbc:mysql://데이터베이스 주소:포트번호/스키마이름?useSSL=false&amp;serverTimezone=UTC">
            </property>
            <property name="username" value="MySQL 계정"></property>
            <property name="password" value="비밀번호"></property>
        </bean>        
            
    									-->
    
    
            
     
     
        <!-- 자신의 PC(로컬)에 MySql을 설치했을 경우 -->
        <bean id="dataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
            <property name="url"
                value="jdbc:mysql://127.0.0.1:3306/스키마이름?useSSL=false&amp;serverTimezone=UTC">
            </property>
            <property name="username" value="아이디"></property>
            <property name="password" value="비밀번호"></property>
        </bean>        
        
       
        
        <!-- mybatis SqlSessionFactoryBean -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="configLocation" value="classpath:/mybatis-config.xml" />
     		<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" />
    	</bean>
    
    	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
     		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
    	</bean>
    
    
    
    </beans>
    
    
    [ソース]
    https://all-record.tistory.com/175[世界のすべての記録]
    https://kuzuro.blogspot.com/2019/08/3.html
    接続先がローカルの場合は127.0.0.1、後に3306と入力します.3306はMySQLのインストール時に指定されたポートで、変更がなければデフォルトは3306です.

    3.テストの設定


    root-context.xmlへの操作が完了したら、src/test/javaにMySQL ConnectionTestクラスとMySbasistTestクラスを作成します.

    * MyBatisTest
    package jae.won.abc;
    
    import javax.inject.Inject;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
    public class MyBatisTest 
    {
     @Inject
     private SqlSessionFactory sqlFactory;
     
     @Test
     public void testFactory(){
         System.out.println("\n >>>>>>>>>> sqlFactory 출력 : "+sqlFactory);
     }
     
     @Test
     public void testSession() throws Exception{
         
         try(SqlSession session = sqlFactory.openSession()){
             
             System.out.println(" >>>>>>>>>> session 출력 : "+session+"\n");
             
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
     
    }
    * MySQLConnection
    package jae.won.abc;
    
    import java.sql.Connection;
    
    import javax.inject.Inject;
    import javax.sql.DataSource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/root-context.xml" })
    public class MySQLConnectionTest {
     
     @Inject
     private DataSource ds;
    
     @Test
     public void testConnection() throws Exception {
    
         try (Connection con = ds.getConnection()) {
    
             System.out.println("\n >>>>>>>>>> Connection 출력 : " + con + "\n");
    
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
     
    }
    
    以下はmybatis-configからsrc/main/resourcesです.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>
    次のマッパーを追加します.
    src/main/resourcesでmappersフォルダ→O O O O Mapperを作成します.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="namespace 입력">
    
    </mapper>
    JUnitの実行

    これでコンソールウィンドウに表示されます.でも!!!私の状況は間違いです.
    Unable to load authentication plugin 'caching_sha2_password
    この間違いです.エラーが発生した場合は、解決策をリンクに掛けます→エラー解決
    ▼現在実行中で、メイン画面の出力が正しければ成功.