[スプリング]MyBatis

23065 ワード

MyBatis


文書:https://mybatis.org/mybatis-3/ko/getting-started.html

優先パラメータ


pom.xmlの追加
     <!-- MyBatis -->
     <dependency>
  	 	<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.5.7</version>
	 </dependency>
https://search.maven.org/search?q=g:org.mybatis
Testクラスの作成

XMLからSqlSessionFactory**を構築

		String resource = "mybatis-config-test.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
MyBasisでは,セッションはJDBCで接続の役割を果たす.

現在はTest環境で使用されており、Test/resourcesの下に配置されていますが、実際に使用する場合は元のリソースに配置できます.
mybatis-config-test.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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>
まず、実行時に#{}をハードコーディングしてすべて置き換えます.
XMLを使用せずに行うことができますが、まずXMLを使用します.XMLを使用せずにSqlSessionFactoryを構築するには、本書を参照してください.

SqlSessionFactoryでのSqlSessionの作成

		try (SqlSession session = sqlSessionFactory.openSession()) {
			  List<ProductDto> productDtoList = session.selectList("ProductMapper.selectByCategoryId", 1);
			  log.info("DEBUG : {}", productDtoList);
		}
JDBCではconnectionに似た役割がセッションであり、同様にリソースを取得した場合は閉じる必要があります.try with resourcesは自動的に閉じます.
MyBatisTest.java
package com.ntscorp.intern.dao;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ntscorp.intern.product.dto.ProductDto;

public class MyBatisTest {
	
	private static final Logger log = LoggerFactory.getLogger(MyBatisTest.class);
	
	@Test
	public void gettingStarted() throws IOException {
		String resource = "mybatis-config-test.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		try (SqlSession session = sqlSessionFactory.openSession()) {
			  List<ProductDto> productDtoList = session.selectList("ProductMapper.selectByCategoryId", 1);
			  log.info("DEBUG : {}", productDtoList);
		}
	}
}

マッピングされたSQL構文の表示


XMLまたは宣言を使用して構文を定義できます.では、XMLを見てみましょう.マイワティスが提供するほとんどの機能はXMLマッピング技術を使用しています.
ProductMapper
<?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="ProductMapper">
  <select id="selectByCategoryId" resultType="com.ntscorp.intern.product.dto.ProductDto">
    SELECT display_info.id, display_info.place_name, product.content AS ProductContent, 
			product.description AS productDescription, 
			display_info.product_id, file_info.save_file_name AS productImageUrl 
			FROM product JOIN display_info ON product.id = display_info.product_id 
			JOIN product_image ON product.id = product_image.product_id 
			JOIN file_info ON product_image.file_id = file_info.id 
			WHERE product.category_id = 1 AND product_image.type = 'th' ;
  </select>
</mapper>
ここからnamespaceidが見られます.
List<ProductDto> productDtoList = 
	session.selectList("ProductMapper.selectByCategoryId", 1);
これを利用してnamespace.idの形式で導入して使用します.
注:「ネームスペース」(Namespaces)の説明
ネームスペース(Namespaces)は、このバージョンでは実際にはオプションです.ただし、パッケージパスを含むフルネーム構文を区別するために使用する必要があります.

MyBatisスプリング連動

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.6</version>
</dependency>