[スプリング]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.javapackage 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>
ここからnamespace
とid
が見られます.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>
Reference
この問題について([スプリング]MyBatis), 我々は、より多くの情報をここで見つけました
https://velog.io/@injoon2019/스프링-MyBatis-t7r5como
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
String resource = "mybatis-config-test.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
<?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>
try (SqlSession session = sqlSessionFactory.openSession()) {
List<ProductDto> productDtoList = session.selectList("ProductMapper.selectByCategoryId", 1);
log.info("DEBUG : {}", productDtoList);
}
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);
}
}
}
<?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>
List<ProductDto> productDtoList =
session.selectList("ProductMapper.selectByCategoryId", 1);
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
Reference
この問題について([スプリング]MyBatis), 我々は、より多くの情報をここで見つけました https://velog.io/@injoon2019/스프링-MyBatis-t7r5comoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol