Java学習ノート32:Spring統合mybatis使用

6160 ワード

MyBatisは、通常のSQLクエリー、ストレージ・プロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです.MyBatisは、ほとんどのJDBCコードとパラメータの手動設定と結果セットの検索を排除します.MyBatisは、簡単なXMLまたは注記を使用して構成および元のマッピングに使用し、インタフェースとJavaのPOJOs(Plain Old Java Objects、通常のJavaオブジェクト)をデータベース内のレコードにマッピングします.
Springフレームワークでmybatisを統合するには、主に次の手順に従います.
1.依存パッケージの解決が必要です.POMでXMLでは、依存を配置します(この文章を読むときは、mvnを上手に使ってほしいです.そうしないと面倒です!)
<!-- mybatis -->
		 <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.1.1</version>
        </dependency>  
            <dependency>  
                <groupId>org.mybatis</groupId>  
                <artifactId>mybatis-spring</artifactId>  
                <version>1.1.1</version>  
            </dependency>  
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.23</version>
		</dependency>

2.依存パッケージの解決後、springのxmlファイルを構成し、service-dalを構成します.xmlのファイル、このファイルはwebにされます.xmlは含まれています.このファイルでは主にJDBCのデータベースリンク、sqlSessionFactory、SqlSessionTemplate、およびImplのパッケージをスキャンします.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
	default-autowire="byName">
	<!--    JDBC    -->
    <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"></beans:property>
        <beans:property name="url" value="${account.mysql.url}"></beans:property>
        <beans:property name="username" value="${account.mysql.username}"></beans:property>
        <beans:property name="password" value="${account.mysql.password}"></beans:property>
        <beans:property name="defaultAutoCommit" value="true"></beans:property>
    </beans:bean>
	<!--   myBatis-config.xml    ,    myBatis/     DAO   SQL   XML   -->
    <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="configLocation" value="classpath:myBatis-config.xml" />
        <beans:property name="mapperLocations" value="classpath:myBatis/*.xml" />
    </beans:bean>
    <!-- SqlSessionTemplate         SQL    ,        -->
    <beans:bean class="org.mybatis.spring.SqlSessionTemplate">
    	<beans:constructor-arg ref="sqlSessionFactory"/>
    </beans:bean>
	<!-- Spring Bean   -->
	<context:component-scan base-package="com.xxx.account.dal">
		<context:include-filter type="regex" expression=".*Impl" />
	</context:component-scan>
</beans:beans>

3.上のプロファイルにmyBatis-configをインポートしました.xmlプロファイル.mapperLocations自動スキャンDAO対応のSQL構成のXMLファイルを開いたので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>
    <mappers></mappers>
</configuration>

4.myBatis/ディレクトリの下にSQL構成のファイルがあります.簡単な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"> 
<!--   namespace    ,         namespace   !-->
<mapper namespace="com.mybatis.UserDao">
    <delete id="countAll">
       	DELETE FROM guest_book WHERE id = 41
    </delete>
</mapper>

5.構成はほぼ完了しました.残りはDAOを書く必要があります.削除文は簡単ですから、DAOも簡単です.
インタフェースの宣言
package com.xxx.account.dal;

public interface OpenapiInfoDal {
	
	
	Integer getAll();
}

ベースクラス、注釈方式でSqlSessionTemplateインスタンスをロードする
package com.xxx.account.dal;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;

public class BaseDal {
	
	@Autowired
	protected SqlSessionTemplate sqlSessionTemplate;
}

具体的な実装:
package com.xxx.account.dal.impl;

import com.xxxx.account.dal.BaseDal;
import com.xxx.account.dal.OpenapiInfoDal;


public class OpenapiInfoDalImpl extends BaseDal implements OpenapiInfoDal {
	
	public Integer getAll() {
		sqlSessionTemplate.delete("com.mybatis.UserDao.countAll");
		return 1;
	}
}

Controllerで呼び出す:
package com.xxx.account.web;


/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	
	@Autowired
	private OpenapiInfoDal openapiInfoDal;
	
	@RequestMapping(value = "/test", method = RequestMethod.GET)
	@ResponseBody
	public String test(HttpServletRequest request) {
		openapiInfoDal.getAll(); //      
		
	}
	
}

説明:こちらはただ最も簡単な統合で、具体的なSQL XMLはどのように配置して、詳しいMyBatisの配置などはまた自分でハンド・バックを見る必要があります