目次
1. 統合のアイデア
2. 環境を統合する
3.spring設定ファイル
4. Mapperで書かれた3つのメソッド
4.1独自のdao開発(Springとの統合後)
4.1.1User.xml
4.1.2 dao (実装クラスは SqlSessionDaoSupport を継承)
4.1.3 daoの設定
4.2.3 テストプログラム
4.2mapperエージェント開発
4.2.1mapper.xmlとmapper.java
4.2.2 (MapperFactoryBean 経由)プロキシ オブジェクトを作成します
4.3 MapperScannerConfigurer によるマッパー スキャン (推奨)
ホームページ Java &#&チュートリアル Spring+SpringMVC+MyBatis の詳細な学習と構築 - MyBatis と Spring の統合

Spring+SpringMVC+MyBatis の詳細な学習と構築 - MyBatis と Spring の統合

Jun 26, 2017 am 09:26 AM
mybatis 勉強 建てる 深く行く

転載する場合は出典を明記してください:

前述の通り: Spring+SpringMVC+MyBatis の詳細な学習と構築 (8) - MyBatis クエリ キャッシュ

1. 統合のアイデア

Spring はシングルトンを通じて SqlSessionFactory を管理する必要があります。

Spring と MyBatis は統合してプロキシ オブジェクトを生成し、SqlSessionFactory を使用して SqlSession を作成します。 (SpringとMyBatisの統合は自動的に完了します)

永続層のマッパーはSpringで管理する必要があります。

2. 環境を統合する

Java プロジェクトを作成する (実際の開発プロジェクト構造に近い)

jar パッケージ:

mybatis3.2.7 jar パッケージ

spring3.2.0 jar パッケージ

dbcp 接続プール

データベースドライバー

mybatis と spring の統合パッケージ: ibatis と spring の初期統合は spring によって正式に提供され、mybatis と spring の統合は mybatis によって提供されました。

3.spring設定ファイル

applicationContext.xmlでsqlSessionFactoryとデータソースを設定します。 SqlSessionFactory は、mybatis と spring の統合パッケージの下にあります。


<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans 
         
         
         
         
         
         
         
         
         "><!-- 加载配置文件 --><context:property-placeholder location="classpath:db.properties"/><!-- 数据库连接池,使用dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="maxActive" value="10"/><property name="maxIdle" value="5"/></bean><!-- SqlSessionFactory配置 --><!-- 让Spring管理SqlSessionFactory使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /></bean></beans>
ログイン後にコピー

4. Mapperで書かれた3つのメソッド

4.1独自のdao開発(Springとの統合後)

4.1.1User.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命名空间,作用就是对sql进行分类化的管理,理解为sql隔离
    注意:使用mapper代理开发时,namespace有特殊作用  --><mapper namespace="test"><!--在映射文件中配置很多sql语句  --><!--需求:通过id查询用户表的记录  --><!--id:标识映射文件中的sql,称为statement的id。将sql语句封装在mapperStatement的对象中,所有id称为Statement的id;
        parameterType:指定输入参数的类型,这里指定int型;
        #{}:表示一个占位符;
        #{id}:其中id表示接收输入的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或其它名称;
        resultType:指定输出结果所映射的Java对象类型,select指定resultType表示将单条记录映射成Java对象。      --><select id="findUserById" parameterType="int" resultType="joanna.yan.po.User">select * from user where id=#{value}</select> </mapper>
ログイン後にコピー

SqlMapConfig.xmlにUser.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>  <!-- 
      批量别名的定义:
      package:指定包名,mybatis会自动扫描包中的pojo类,自定义别名,别名就是类名(首字母大写或小写都可以) -->  <typeAliases>  <package name="joanna.yan.po"/>  </typeAliases><mappers><mapper resource="sqlmap/User.xml"/><!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载;
            遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
            以上规范的前提是:使用的是mapper代理方法;          --><package name="joanna.yan.mapper"/></mappers>
 </configuration>
ログイン後にコピー

4.1.2 dao (実装クラスは SqlSessionDaoSupport を継承)


public interface UserDao {//根据id查询用户信息public User findUserById(int id) throws Exception;
}
ログイン後にコピー

dao インターフェース実装クラスは Spring を通じて SqlSessionFactory を注入する必要があります。

ここでは、Spring 宣言設定メソッドを使用して dao Bean を設定します。 UserDaoImpl 実装クラスに SqlSessionDaoSupport を継承させます。


public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{

    @Overridepublic User findUserById(int id) throws Exception {//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSessionSqlSession sqlSession=this.getSqlSession();
        User user=sqlSession.selectOne("test.findUserById", id);return user;
    }
}
ログイン後にコピー

4.1.3 daoの設定

applicationContext.xmlでdaoを設定します。


    <!-- 方法一:原始dao接口  --><bean id="userDao" class="joanna.yan.dao.UserDaoImpl"><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>
ログイン後にコピー

4.1.4 テストプログラム


public class UserDaoImplTest {private ApplicationContext applicationContext;
    
    @Beforepublic void setUp(){
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }
    
    @Testpublic void findUsetByIdTest() throws Exception{
        UserDao userDao=(UserDao) applicationContext.getBean("userDao");
        User user=userDao.findUserById(1);
        System.out.println(user);
    }
}
ログイン後にコピー

4.2mapperエージェント開発

4.2.1mapper.xmlとmapper.java


<?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命名空间,作用就是对sql进行分类化的管理,理解为sql隔离
    注意:使用mapper代理开发时,namespace有特殊作用,namespace等于mapper接口地址  --><mapper namespace="joanna.yan.mapper.UserMapper"><select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select></mapper>
ログイン後にコピー


public interface UserMapper {public User findUserById(int id) throws Exception;
}
ログイン後にコピー

4.2.2 (MapperFactoryBean 経由)プロキシ オブジェクトを作成します

applicationContext.xml でマッパーを設定します。


    <!-- 方法二:mapper配置
         MapperFactoryBean:根据mapper接口生成代理对象     --><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="joanna.yan.mapper.UserMapper" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>
ログイン後にコピー

4.2.3 テストプログラム


public class UserMapperTest {private ApplicationContext applicationContext;
    
    @Beforepublic void setUp(){
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }
    
    @Testpublic void findUsetByIdTest() throws Exception{
        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
        User user=userMapper.findUserById(1);
        System.out.println(user);
    }
}
ログイン後にコピー

この方法の問題点は、マッパーごとに設定する必要があり、面倒であることです。

4.3 MapperScannerConfigurer によるマッパー スキャン (推奨)

applicationContext.xml でマッパーのバッチ スキャンを構成します。


    <!-- 方法三:mapper批量扫描 
          从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册
          遵循规范:将mapper.java和mapper.xml映射文件名称保持一致,且在一个目录中。
         自动扫描出来的mapper的bean的id为mapper类名(首字母小写)     --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 指定扫描的包名
             如果扫描多个包,每个包中间使用半角逗号分隔          --><property name="basePackage" value="joanna.yan.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
ログイン後にコピー

このとき、SqlMapConfig.xmlのjoanna.yan.mapper以下のバッチロードマッパー設定は省略可能です。

テスト手順:


@Testpublic void findUsetByIdTest() throws Exception{
        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
        User user=userMapper.findUserById(1);
        System.out.println(user);
    }
ログイン後にコピー

以上がSpring+SpringMVC+MyBatis の詳細な学習と構築 - MyBatis と Spring の統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

C言語の魅力に迫る ~プログラマーの可能性を引き出す~ C言語の魅力に迫る ~プログラマーの可能性を引き出す~ Feb 24, 2024 pm 11:21 PM

C言語学習の魅力:プログラマーの可能性を引き出す テクノロジーの発展に伴い、コンピュータプログラミングは大きな注目を集めている分野です。数あるプログラミング言語の中でもC言語は常にプログラマーに愛されています。そのシンプルさ、効率性、幅広い用途により、C 言語の学習は、多くの人にとってプログラミングの分野に入る最初のステップとなっています。この記事では、C言語を学ぶ魅力と、C言語を学ぶことでプログラマーの可能性を引き出す方法について解説します。 C言語学習の魅力は、まずその簡単さにあります。他のプログラミング言語と比較すると、C言語は

MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 MyBatisのキャッシュ機構を解析:一次キャッシュと二次キャッシュの特徴と使い方を比較 Feb 25, 2024 pm 12:30 PM

MyBatis のキャッシュ メカニズムの分析: 1 次キャッシュと 2 次キャッシュの違いと応用 MyBatis フレームワークでは、キャッシュはデータベース操作のパフォーマンスを効果的に向上させることができる非常に重要な機能です。そのうち、一次キャッシュと二次キャッシュは、MyBatis でよく使用される 2 つのキャッシュ メカニズムです。この記事では、一次キャッシュと二次キャッシュの違いと用途を詳細に分析し、具体的なコード例を示して説明します。 1. レベル 1 キャッシュ レベル 1 キャッシュはローカル キャッシュとも呼ばれ、デフォルトで有効になっており、オフにすることはできません。 1次キャッシュはSqlSesです

Wordでルート番号を入力する方法を一緒に学びましょう Wordでルート番号を入力する方法を一緒に学びましょう Mar 19, 2024 pm 08:52 PM

Word でテキスト コンテンツを編集するときに、数式記号の入力が必要になる場合があります。 Word でルート番号を入力する方法を知らない人もいるので、Xiaomian は私に、Word でルート番号を入力する方法のチュートリアルを友達と共有するように頼みました。それが私の友達に役立つことを願っています。まず、コンピュータで Word ソフトウェアを開き、編集するファイルを開き、ルート記号を挿入する必要がある場所にカーソルを移動します。下の図の例を参照してください。 2. [挿入]を選択し、記号内の[数式]を選択します。下の図の赤丸で示すように: 3. 次に、下の[新しい数式を挿入]を選択します。以下の図の赤丸で示すように: 4. [根号式]を選択し、適切な根号を選択します。下の図の赤丸で示したように、

ミストロック王国の自然の中に建物を建てることはできますか? ミストロック王国の自然の中に建物を建てることはできますか? Mar 07, 2024 pm 08:28 PM

ミストロック王国でプレイするとき、プレイヤーはさまざまな材料を集めて建物を建てることができます。多くのプレイヤーは、野生で建物を建てるべきかどうか知りたいと考えています。ミストロック王国では、建物は野生で建てることはできません。祭壇の範囲内になければなりません。 。ミストロック王国の自然の中に建物を建てることはできますか? 答え: いいえ。 1. ミストロックキングダムの荒野には建物を建てることができません。 2. 建物は祭壇の範囲内に建てなければなりません。 3. プレイヤーは自分で精霊の火の祭壇を設置できますが、範囲を離れると建物を建設できなくなります。 4. 山に直接穴を掘って家にすることもできるので、建築資材を消費する必要がありません。 5. プレイヤー自身が建てた建物には快適性のメカニズムがあり、内装が良いほど快適性が高くなります。 6. 高い快適性により、プレイヤーに属性ボーナスがもたらされます。

Go言語のmain関数をゼロから学ぶ Go言語のmain関数をゼロから学ぶ Mar 27, 2024 pm 05:03 PM

タイトル: Go言語のmain関数をゼロから学ぶ Go言語はシンプルで効率的なプログラミング言語として開発者に好まれています。 Go 言語では、main 関数はエントリ関数であり、すべての Go プログラムにはプログラムのエントリ ポイントとして main 関数が含まれている必要があります。この記事ではGo言語のmain関数をゼロから学ぶ方法と具体的なコード例を紹介します。 1. まず、Go 言語開発環境をインストールする必要があります。公式ウェブサイト (https://golang.org) にアクセスできます。

MyBatis コンソールでの SQL 出力のリアルタイム監視 MyBatis コンソールでの SQL 出力のリアルタイム監視 Feb 25, 2024 pm 03:48 PM

MyBatis は、便利な SQL マッピングおよびデータベース操作機能を提供する人気の永続層フレームワークで、開発者がデータベースをより効率的に操作できるようにします。実際の開発プロセスでは、SQL クエリのデバッグと最適化を改善するために、MyBatis によって実行された SQL ステートメントをリアルタイムでコンソールに出力する必要がある場合があります。この記事では、MyBatis のコンソール上で SQL のリアルタイム出力を実現する方法と具体的なコード例を紹介します。まず、My を追加する必要があります

PyTorch を PyCharm にすばやくインストールする: 簡単なガイド PyTorch を PyCharm にすばやくインストールする: 簡単なガイド Feb 24, 2024 pm 09:54 PM

PyTorch インストール ガイド: PyCharm で開発環境をすばやくセットアップする PyTorch は、現在の深層学習分野で最も人気のあるフレームワークの 1 つであり、使いやすさと柔軟性の特徴を備えており、開発者に好まれています。この記事では、ディープ ラーニング プロジェクトの開発を開始できるように、PyCharm で PyTorch 開発環境を迅速にセットアップする方法を紹介します。ステップ 1: PyTorch をインストールする まず、PyTorch をインストールする必要があります。通常、PyTorch のインストールではシステム環境を考慮する必要があります。

See all articles