Mybatisセクション
13992 ワード
Mybatisセクション
1.JDBCプログラミングにはどのような欠点がありますか.MyBatisはどのようにこれらの問題を解決しますか.
①
データベース・リンクの作成、解放は、システム・リソースの浪費を頻繁に引き起こし、システムのパフォーマンスに影響を与えます.データベース・リンク・プールを使用すると、この問題を解決できます.
解決:
SqlMapConfig.xmlでデータリンクプールを構成し、接続プールを使用してデータベースリンクを管理します.
②
S
ql文がコードに書き込まれるとコードのメンテナンスが難しくなり、実際にsqlを適用すると変化が大きくなる可能性があります.sqlの変動はjavaコードを変更する必要があります.
解決:
Sql文をXXXXXXmapperに配置する.xmlファイルでjavaコードから分離します.
③
方向
sql
文伝達パラメータが面倒です.
sql
ステートメントの
where
条件は必ずしもではなく、多くても少なくても、プレースホルダはパラメータに一つ一つ対応する必要があります.
解決:
M
ybatisはjavaオブジェクトをsql文に自動的にマッピングします.
④
結果セットの解析が面倒で、
sql
変化は解析コードの変化をもたらし、解析前に遍歴する必要があります.データベースレコードをカプセル化できる場合は
pojo
オブジェクト解析が便利です.
解決:
M
ybatisはsql実行結果をjavaオブジェクトに自動的にマッピングします.
2.MyBatisのプログラミング手順はどのようなものですか?
①
作成
SqlSessionFactory
②
SqlSessionFactoryで作成
SqlSession
③
sqlsessionによるデータベース操作
④
セッションを呼び出すcommit()コミットトランザクション
⑤
セッションを呼び出すclose()セッションを閉じる
3.MyBatisとHibernateの違いは何ですか?
Mybatisはhibernateとは異なり、完全にORMフレームワークではありません.
MyBatis
プログラマーがSql文を自分で書く必要がありますがmybatisは
に合格
XML
あるいは注釈方式が柔軟である
実行するsql文を構成し、javaオブジェクトとsql文をマッピングして最終実行のsqlを生成し、最後にsql実行の結果をマッピングしてjavaオブジェクトを生成します.
M
ybatisは学習の敷居が低く、簡単で学びやすく、プログラマーは直接原生態sqlを編纂し、sqlの実行性能を厳格に制御することができ、柔軟性が高く、関係データモデルに対する要求が高くないソフトウェア開発に非常に適している.例えば、インターネットソフトウェア、企業運営類ソフトウェアなどである.このようなソフトウェアの需要の変化は頻繁であるが、需要の変化は成果の出力が迅速である.しかし、mybatisではデータベースの無関係性が実現できないことが柔軟な前提であり、複数のデータベースをサポートするソフトウェアを実現する必要がある場合は、sqlマッピングファイルをカスタマイズする必要があり、ワークロードが大きい.
H
ibernateオブジェクト/リレーショナルマッピング能力が強く、データベースに関係なく良好です.リレーショナルモデルに要求されるソフトウェア(例えば、固定されたカスタマイズソフトウェアが必要)hibernateで開発すれば、多くのコードを節約し、効率を高めることができます.しかし、Hibernateの欠点は、学習の敷居が高く、敷居が高いことに精通し、O/Rマッピングをどのように設計するか、性能とオブジェクトモデルの間でどのように比較するか、Hibernateをどのようにうまく使うかには強い経験と能力が必要です.
要するに、ユーザーのニーズに応じて限られたリソース環境でメンテナンス性、拡張性の良いソフトウェアアーキテクチャを作ることができれば良いアーキテクチャなので、フレームワークは適切であることが望ましい.
4.MyBatisのmapperインタフェースを使用して呼び出す場合、どのような要件がありますか?
①
M
apperインタフェースメソッド名とmapper.xmlで定義されているsqlごとのidは同じです
②
M
apperインタフェースメソッドの入力パラメータタイプとmapper.xmlで定義した各sqlのparameterTypeのタイプは同じです
③
M
apperインタフェースメソッドの出力パラメータタイプとmapper.xmlで定義されているsqlごとのresultTypeのタイプは同じです
④
M
apper.xmlファイルのnamespaceはmapperインタフェースのクラスパスです.
5.SqlMapConfig.xmlで構成されている内容は何ですか?
SqlMapConfig.xmlで構成されている内容と順序は次のとおりです.
properties(プロパティ)
settings(構成)
typeAliases(タイプ別名)
typeHandlers(タイププロセッサ)
objectFactory(オブジェクトファクトリ)
プラグイン
Environments(環境セットプロパティオブジェクト)
環境サブプロパティオブジェクト
TransactionManager(トランザクション管理)
データソース
マッパー
6.簡単にMyBatisの一級キャッシュと二級キャッシュを言いますか?
M
ybatisはまずキャッシュから結果セットをクエリーし、そうでない場合はデータベースをクエリーし、ある場合はキャッシュから取り出して結果セットを返すとデータベースを行かない.
M
ybatis内部ストレージキャッシュは、hashCode+sqlId+Sql文のHashMapを使用します.valueはクエリからマッピングされたjavaオブジェクトです
M
ybatisの2次キャッシュはクエリーキャッシュであり、その役割ドメインはmapperのnamespaceであり、つまり同じnamespaceでsqlをクエリーしてキャッシュからデータを取得することができる.
二次キャッシュは
SqlSession
のです.
7.Mapperの作成にはどのような方法がありますか?
①インタフェース実装クラス継承SqlSessionDaoSupport
この方法ではmapperインタフェース、mapperインタフェース実装クラス、mapperを記述する必要がある.xmlファイル
1、sqlMapConfig.xmlでmapperを構成する.xmlの場所
2、mapperインタフェースの定義
3、クラス統合を実現するSqlSessionDaoSupport
mapperメソッドではthis.getSqlSession()は、データの削除と変更を行います.
4、spring構成
②orgを使用する.mybatis.spring.mapper.MapperFactoryBean
1、sqlMapConfig.xmlでmapperを構成する.xmlの場所
もしmapper.xmlとmappreインタフェースの名前は同じで、同じディレクトリで構成する必要はありません.
2、mapperインタフェースの定義
に注意
1、mapper.xmlのnamespaceはmapperインタフェースのアドレスです
2、mapperインタフェースのメソッド名とmapper.xmlで定義されたstatementのidは一致しています
3、Springで定義
③mapperスキャナー使用
1、mapper.xmlファイルの作成、
注意:
mapper.xmlのnamespaceはmapperインタフェースのアドレスです
mapperインタフェースのメソッド名とmapper.xmlで定義されたstatementのidは一致しています
mapper.xmlとmapperインタフェースの名前が一致していればsqlMapConfigではない.xmlでの構成
2、mapperインタフェースの定義
注意!xmlのファイル名とmapperのインタフェース名は一致し、同じディレクトリに配置されます.
3、mapperスキャナーの配置
4、
スキャナを使用してspringコンテナからmapperの実装オブジェクトを取得する
スキャナは、インタフェースをエージェントメソッドで実装オブジェクトを生成し、springコンテナに自動的に登録します.名前はmapperインタフェースの名前です.
為知ノート(Wiz)から
転載先:https://www.cnblogs.com/tangwan/p/4662154.html
1.JDBCプログラミングにはどのような欠点がありますか.MyBatisはどのようにこれらの問題を解決しますか.
①
データベース・リンクの作成、解放は、システム・リソースの浪費を頻繁に引き起こし、システムのパフォーマンスに影響を与えます.データベース・リンク・プールを使用すると、この問題を解決できます.
解決:
SqlMapConfig.xmlでデータリンクプールを構成し、接続プールを使用してデータベースリンクを管理します.
②
S
ql文がコードに書き込まれるとコードのメンテナンスが難しくなり、実際にsqlを適用すると変化が大きくなる可能性があります.sqlの変動はjavaコードを変更する必要があります.
解決:
Sql文をXXXXXXmapperに配置する.xmlファイルでjavaコードから分離します.
③
方向
sql
文伝達パラメータが面倒です.
sql
ステートメントの
where
条件は必ずしもではなく、多くても少なくても、プレースホルダはパラメータに一つ一つ対応する必要があります.
解決:
M
ybatisはjavaオブジェクトをsql文に自動的にマッピングします.
④
結果セットの解析が面倒で、
sql
変化は解析コードの変化をもたらし、解析前に遍歴する必要があります.データベースレコードをカプセル化できる場合は
pojo
オブジェクト解析が便利です.
解決:
M
ybatisはsql実行結果をjavaオブジェクトに自動的にマッピングします.
2.MyBatisのプログラミング手順はどのようなものですか?
①
作成
SqlSessionFactory
②
SqlSessionFactoryで作成
SqlSession
③
sqlsessionによるデータベース操作
④
セッションを呼び出すcommit()コミットトランザクション
⑤
セッションを呼び出すclose()セッションを閉じる
3.MyBatisとHibernateの違いは何ですか?
Mybatisはhibernateとは異なり、完全にORMフレームワークではありません.
MyBatis
プログラマーがSql文を自分で書く必要がありますがmybatisは
に合格
XML
あるいは注釈方式が柔軟である
実行するsql文を構成し、javaオブジェクトとsql文をマッピングして最終実行のsqlを生成し、最後にsql実行の結果をマッピングしてjavaオブジェクトを生成します.
M
ybatisは学習の敷居が低く、簡単で学びやすく、プログラマーは直接原生態sqlを編纂し、sqlの実行性能を厳格に制御することができ、柔軟性が高く、関係データモデルに対する要求が高くないソフトウェア開発に非常に適している.例えば、インターネットソフトウェア、企業運営類ソフトウェアなどである.このようなソフトウェアの需要の変化は頻繁であるが、需要の変化は成果の出力が迅速である.しかし、mybatisではデータベースの無関係性が実現できないことが柔軟な前提であり、複数のデータベースをサポートするソフトウェアを実現する必要がある場合は、sqlマッピングファイルをカスタマイズする必要があり、ワークロードが大きい.
H
ibernateオブジェクト/リレーショナルマッピング能力が強く、データベースに関係なく良好です.リレーショナルモデルに要求されるソフトウェア(例えば、固定されたカスタマイズソフトウェアが必要)hibernateで開発すれば、多くのコードを節約し、効率を高めることができます.しかし、Hibernateの欠点は、学習の敷居が高く、敷居が高いことに精通し、O/Rマッピングをどのように設計するか、性能とオブジェクトモデルの間でどのように比較するか、Hibernateをどのようにうまく使うかには強い経験と能力が必要です.
要するに、ユーザーのニーズに応じて限られたリソース環境でメンテナンス性、拡張性の良いソフトウェアアーキテクチャを作ることができれば良いアーキテクチャなので、フレームワークは適切であることが望ましい.
4.MyBatisのmapperインタフェースを使用して呼び出す場合、どのような要件がありますか?
①
M
apperインタフェースメソッド名とmapper.xmlで定義されているsqlごとのidは同じです
②
M
apperインタフェースメソッドの入力パラメータタイプとmapper.xmlで定義した各sqlのparameterTypeのタイプは同じです
③
M
apperインタフェースメソッドの出力パラメータタイプとmapper.xmlで定義されているsqlごとのresultTypeのタイプは同じです
④
M
apper.xmlファイルのnamespaceはmapperインタフェースのクラスパスです.
5.SqlMapConfig.xmlで構成されている内容は何ですか?
SqlMapConfig.xmlで構成されている内容と順序は次のとおりです.
properties(プロパティ)
settings(構成)
typeAliases(タイプ別名)
typeHandlers(タイププロセッサ)
objectFactory(オブジェクトファクトリ)
プラグイン
Environments(環境セットプロパティオブジェクト)
環境サブプロパティオブジェクト
TransactionManager(トランザクション管理)
データソース
マッパー
6.簡単にMyBatisの一級キャッシュと二級キャッシュを言いますか?
M
ybatisはまずキャッシュから結果セットをクエリーし、そうでない場合はデータベースをクエリーし、ある場合はキャッシュから取り出して結果セットを返すとデータベースを行かない.
M
ybatis内部ストレージキャッシュは、hashCode+sqlId+Sql文のHashMapを使用します.valueはクエリからマッピングされたjavaオブジェクトです
M
ybatisの2次キャッシュはクエリーキャッシュであり、その役割ドメインはmapperのnamespaceであり、つまり同じnamespaceでsqlをクエリーしてキャッシュからデータを取得することができる.
二次キャッシュは
SqlSession
のです.
7.Mapperの作成にはどのような方法がありますか?
①インタフェース実装クラス継承SqlSessionDaoSupport
この方法ではmapperインタフェース、mapperインタフェース実装クラス、mapperを記述する必要がある.xmlファイル
1、sqlMapConfig.xmlでmapperを構成する.xmlの場所
<mapper resource="mapper.xml " />
<mapper resource="mapper.xml " />
mappers>
2、mapperインタフェースの定義
3、クラス統合を実現するSqlSessionDaoSupport
mapperメソッドではthis.getSqlSession()は、データの削除と変更を行います.
4、spring構成
<bean id=" " class="mapper ">
<property name="sqlSessionFactory" ref="sqlSessionFactory">property>
bean>
②orgを使用する.mybatis.spring.mapper.MapperFactoryBean
1、sqlMapConfig.xmlでmapperを構成する.xmlの場所
もしmapper.xmlとmappreインタフェースの名前は同じで、同じディレクトリで構成する必要はありません.
<mapper resource="mapper.xml " />
<mapper resource="mapper.xml " />
mappers>
2、mapperインタフェースの定義
に注意
1、mapper.xmlのnamespaceはmapperインタフェースのアドレスです
2、mapperインタフェースのメソッド名とmapper.xmlで定義されたstatementのidは一致しています
3、Springで定義
<bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="mapper " />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
bean>
③mapperスキャナー使用
1、mapper.xmlファイルの作成、
注意:
mapper.xmlのnamespaceはmapperインタフェースのアドレスです
mapperインタフェースのメソッド名とmapper.xmlで定義されたstatementのidは一致しています
mapper.xmlとmapperインタフェースの名前が一致していればsqlMapConfigではない.xmlでの構成
2、mapperインタフェースの定義
注意!xmlのファイル名とmapperのインタフェース名は一致し、同じディレクトリに配置されます.
3、mapperスキャナーの配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="mapper ">property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
bean>
4、
スキャナを使用してspringコンテナからmapperの実装オブジェクトを取得する
スキャナは、インタフェースをエージェントメソッドで実装オブジェクトを生成し、springコンテナに自動的に登録します.名前はmapperインタフェースの名前です.
為知ノート(Wiz)から
転載先:https://www.cnblogs.com/tangwan/p/4662154.html