Mybatisテスト問題
4710 ワード
1、自分のmybatisに対する理解を簡単に述べ、mybatisの長所短所2、Mybatisは対象関係マッピング(Object Relational Mapping、ORMと略称する)フレームワークを簡単に述べ、対象と関係データベースに存在する不一致現象を解決するためである.つまりMybatisの注目点は、オブジェクトとデータベースのマッピングにあり、Mybatisはデータベースから得られた分散データをパッケージ化して、開発者が直接にオブジェクトを入手することになります.Mybatisはjdbcのオペレーティングデータベースのプロセスをパッケージ化しています. SQL 自身は、登録ドライバ、connectionの作成、statementの作成、パラメータの手動設定、結果集検索など、jdbcの煩雑なプロセスコードを精力的に処理する必要がない.Mybaitsの利点:(1)SQL文に基づいてプログラミングしています.かなり柔軟で、アプリケーションやデータベースの既存の設計に影響を与えないです.SQLはXMLに書いて、sqlとプログラムコードの結合を解除して、統一管理に便利です.XMLタグを提供し、ダイナミックSQL文の作成をサポートし、再利用できます.(2)JDBCに比べて、50%以上のコード量を削減し、JDBCの大量冗長コードを除去しました.手動スイッチ接続は必要ありません.MyBatisフレームの欠点:(1)SQL文の編纂作業量が多く、特にフィールドが多く、関連表が多い場合、開発者がSQL文を編纂する機能に一定の要求があります.(2)SQL文はデータベースに依存しており、データベースの移植性が悪くなり、勝手にデータベースを交換できない.2、実体クラスの属性名と表のフィールド名が異なる場合、どうすればいいですか?(属性名とフィールド名を変更できません.)Mapper.xmlマッピングファイルでは、SQL文を書くときから別名をMybatisグローバルプロファイルで、ラクダのピークの名前を3つ開けます.簡単には、mybatisを利用して一括削除機能を実現するにはどうすればいいですか?1.collection="array"の場合、表名パラメータは配列、2.collection="list"の場合、表名パラメータはセットとなります.
4、mybatisマッピングファイルで自動的に生成された(主)キーの値をどのように取得しますか?Mapperファイルinsert文の設定 useGeneratoedKeys="true"keyProperty="id"5、mybatisのパラメータを伝えるメカニズムを簡単に述べますか?
6、レスリングType:レスリングTypeを使って比較的簡単に実現できます.もしpojoに検索された列名が含まれていないなら、列名の対応する属性を追加してマッピングが完了します.
検索結果がない場合は、特別な要望があります.
出力タイプとしてのpoクラスを定義します.sqlクエリの結果集のすべてのフィールドを定義します.この方法は比較的簡単で、企業では一般的です.resultMap:単独でresultMapを定義する必要があります.ちょっと面倒です.検索結果に対して特別な要求があれば、resultMapを使って関連クエリをpojoの属性にマッピングします.7、MyBatisで検索してselectを行います.マッピングの場合、リターンタイプはレスリングTypeでもいいし、レスリングtMapでもいいし、レスリングTypeはリターンタイプ(私たちのモデルオブジェクトに対応するエンティティ)を直接表していますが、レスリングtMapは外部のResultMapへの参照です. MyBatisで照会マップを行う時、実際に検索された属性はそれぞれ対応するMapの中にあります.キーは属性名で、値はその対応する値です. ①戻るタイプの属性がレスリングTypeである場合、MyBatisはMapの中のキーの値をレスリングTypeに割り当てられたオブジェクトに対応する属性を取り出すことができます.したがって、MyBatisの各クエリマップの返却タイプはResultMapであり、提供されたリターンタイプがレスリングTypeである場合、MyBatisは自動的に対応するオブジェクトにTultypeを指定します.の属性を指定します ②提供されたリターンタイプがリセットMapである場合、Mapはフィールドモデルをうまく表現できないので、自分でさらにそれを対応の対象に転化する必要があります.これはしばしば複雑なクエリに役立ちます.8、JDBCプログラミングにはどのような欠点がありますか?MyBatisはどのように解決しますか?1、JDBC:データベースリンクの作成、リリースが頻繁にシステムリソースの浪費をもたらします.システムの性能に影響を与えます.データベースリンクを使うとこの問題を解決できます.
11、mybatisはどのように複数のパラメータを伝えますか?HashMapを使って複数のパラメータを伝えます. JavaBeanを使って複数のパラメータを伝達する@Param注解伝法順伝法
12、mybatis運行メカニズムは何ですか?1.mybatis-config.xmlのプロファイルを読み、配置ファイルの属性に応じてCofigrationオブジェクトを組み立てます.
2.Sql Session FactoryBuiderオブジェクトからSql Session Factoryオブジェクトを生成する
3.Sql Session FactoryオブジェクトからSql Sessionオブジェクトを生成する
4.Sql SessionオブジェクトからSQL文13、mybatisはどのようにspringと統合しますか?mybatisマッピングファイルを書かずに、対応するsql文と入力パラメータを注釈で提供します.まず分析@Mapperscanを行います.Importが導入しているクラスを発見しました.このクラスはspringのスキャナーを拡張しました.doSSSSSSchan方法で、すべてのインターフェースをスキャンした.象:1、まずインターフェースの中のbeanDefinitionsオブジェクト(beanを記述するためのもの、beanの情報を記録しています)ps.spring作成対象はインターフェースと関係がなく、bdと関係があります.その後、インターフェースは直接オブジェクトを生成できません.だからspringはMapper FactoryBen(FactoryBenオブジェクト)を生成します.インターフェース3、get Objectを実現した方法は、get Sql Session().get Mapper(this.mapperInterface)/mapperオブジェクトpsを生成します.最下のMapperProxyはjdkの動的エージェントのInvocationHandlerを実現しました.だから、mapper.方法は、実際に動的エージェントのinkeメソッドを呼び出して、vokeを生成します.4、このプロキシオブジェクトを呼び出した時、中のinvoke方法はmapperMethod.execute方法を実行して、それぞれ対応するCRUD操作を実行できます.5、なぜget Mapper(this.mapperInterface)インターフェースを送る必要がありますか?エージェントの元に戻るのでインターフェースです.すべてのインターフェースがMapper FactoryBernオブジェクトになった後、どうやって区別されますか?definitions.get Controtor AgmentValues();Mapper FactoryBeanオブジェクトを生成する際には、すぐに1つのパラメータ構造に値を設定します.これにより名前psが付けられます.スキャンプロセス中に、defintionは毎回入ってくる情報を入手できます.beanDefinitionsに関連して6、その後、すべての構造法を循環して取得し、参加をふるい出します.参照によって対応する名前のMapperFactoryBern 14、mybatオブジェクトを作成します.i sの中の癜{}と${}の違いは何ですか?P r o p e r t i e sファイルの変数のプレースホルダです.ラベルの属性値とs q l内部に使用できます.静的なテキストの置換に属します.例えば{}Proptiesファイルの変数のプレースホルダです.ラベルの属性値とsql内部に使用できます.静的テキストの置換です.例えばProptiesファイルの変数のプレースホルダです.ラベルの属性値とsql内部に使用できます.静的なテキストに置き換えられます.たとえば、「driver」は、comp.mysql.jdbc.Driverに静的に置き換えられます.「{换换}sql実行前にPreparedSttementのパラメータ設定方法を使用して、Sqlの?番号プレースホルダにパラメータ値を設定します.たとえば、ps.setInt(0,parameterValue)は、反射を用いてパラメータオブジェクトからitemオブジェクトのname属性値を取得します.
4、mybatisマッピングファイルで自動的に生成された(主)キーの値をどのように取得しますか?Mapperファイルinsert文の設定 useGeneratoedKeys="true"keyProperty="id"5、mybatisのパラメータを伝えるメカニズムを簡単に述べますか?
6、レスリングType:レスリングTypeを使って比較的簡単に実現できます.もしpojoに検索された列名が含まれていないなら、列名の対応する属性を追加してマッピングが完了します.
検索結果がない場合は、特別な要望があります.
出力タイプとしてのpoクラスを定義します.sqlクエリの結果集のすべてのフィールドを定義します.この方法は比較的簡単で、企業では一般的です.resultMap:単独でresultMapを定義する必要があります.ちょっと面倒です.検索結果に対して特別な要求があれば、resultMapを使って関連クエリをpojoの属性にマッピングします.7、MyBatisで検索してselectを行います.マッピングの場合、リターンタイプはレスリングTypeでもいいし、レスリングtMapでもいいし、レスリングTypeはリターンタイプ(私たちのモデルオブジェクトに対応するエンティティ)を直接表していますが、レスリングtMapは外部のResultMapへの参照です. MyBatisで照会マップを行う時、実際に検索された属性はそれぞれ対応するMapの中にあります.キーは属性名で、値はその対応する値です. ①戻るタイプの属性がレスリングTypeである場合、MyBatisはMapの中のキーの値をレスリングTypeに割り当てられたオブジェクトに対応する属性を取り出すことができます.したがって、MyBatisの各クエリマップの返却タイプはResultMapであり、提供されたリターンタイプがレスリングTypeである場合、MyBatisは自動的に対応するオブジェクトにTultypeを指定します.の属性を指定します ②提供されたリターンタイプがリセットMapである場合、Mapはフィールドモデルをうまく表現できないので、自分でさらにそれを対応の対象に転化する必要があります.これはしばしば複雑なクエリに役立ちます.8、JDBCプログラミングにはどのような欠点がありますか?MyBatisはどのように解決しますか?1、JDBC:データベースリンクの作成、リリースが頻繁にシステムリソースの浪費をもたらします.システムの性能に影響を与えます.データベースリンクを使うとこの問題を解決できます.
MyBatis: SqlMapConfig.xml , 。
2、JDBC:Sql , sql ,sql java 。
MyBatis: Sql XXXXmapper.xml java 。
3、JDBC: sql , sql where , , 。
MyBatis: Mybatis java sql 。
4,JDBC: ,sql , , pojo 。
MyBatis:Mybatis sql java 。
9、mybatisグローバルプロファイルとマッピングファイルでよく使われるラベルは何ですか?configration配置properties属性:propertiesプロファイルをロードできる情報settings設定:mybatisのグローバル属性typeAliasesタイプ命名typeHandlersタイププロセッサobject Factory対象工場plugins挿入を設定できます.件のenvironments環境environment環境変数tranactionManager事務管理器dataSourceデータソースdatabaseIdProviderデータベースメーカー識別mappersマッパー10、mybatis常用注釈は何ですか?11、mybatisはどのように複数のパラメータを伝えますか?HashMapを使って複数のパラメータを伝えます. JavaBeanを使って複数のパラメータを伝達する@Param注解伝法順伝法
12、mybatis運行メカニズムは何ですか?1.mybatis-config.xmlのプロファイルを読み、配置ファイルの属性に応じてCofigrationオブジェクトを組み立てます.
2.Sql Session FactoryBuiderオブジェクトからSql Session Factoryオブジェクトを生成する
3.Sql Session FactoryオブジェクトからSql Sessionオブジェクトを生成する
4.Sql SessionオブジェクトからSQL文13、mybatisはどのようにspringと統合しますか?mybatisマッピングファイルを書かずに、対応するsql文と入力パラメータを注釈で提供します.まず分析@Mapperscanを行います.Importが導入しているクラスを発見しました.このクラスはspringのスキャナーを拡張しました.doSSSSSSchan方法で、すべてのインターフェースをスキャンした.象:1、まずインターフェースの中のbeanDefinitionsオブジェクト(beanを記述するためのもの、beanの情報を記録しています)ps.spring作成対象はインターフェースと関係がなく、bdと関係があります.その後、インターフェースは直接オブジェクトを生成できません.だからspringはMapper FactoryBen(FactoryBenオブジェクト)を生成します.インターフェース3、get Objectを実現した方法は、get Sql Session().get Mapper(this.mapperInterface)/mapperオブジェクトpsを生成します.最下のMapperProxyはjdkの動的エージェントのInvocationHandlerを実現しました.だから、mapper.方法は、実際に動的エージェントのinkeメソッドを呼び出して、vokeを生成します.4、このプロキシオブジェクトを呼び出した時、中のinvoke方法はmapperMethod.execute方法を実行して、それぞれ対応するCRUD操作を実行できます.5、なぜget Mapper(this.mapperInterface)インターフェースを送る必要がありますか?エージェントの元に戻るのでインターフェースです.すべてのインターフェースがMapper FactoryBernオブジェクトになった後、どうやって区別されますか?definitions.get Controtor AgmentValues();Mapper FactoryBeanオブジェクトを生成する際には、すぐに1つのパラメータ構造に値を設定します.これにより名前psが付けられます.スキャンプロセス中に、defintionは毎回入ってくる情報を入手できます.beanDefinitionsに関連して6、その後、すべての構造法を循環して取得し、参加をふるい出します.参照によって対応する名前のMapperFactoryBern 14、mybatオブジェクトを作成します.i sの中の癜{}と${}の違いは何ですか?P r o p e r t i e sファイルの変数のプレースホルダです.ラベルの属性値とs q l内部に使用できます.静的なテキストの置換に属します.例えば{}Proptiesファイルの変数のプレースホルダです.ラベルの属性値とsql内部に使用できます.静的テキストの置換です.例えばProptiesファイルの変数のプレースホルダです.ラベルの属性値とsql内部に使用できます.静的なテキストに置き換えられます.たとえば、「driver」は、comp.mysql.jdbc.Driverに静的に置き換えられます.「{换换}sql実行前にPreparedSttementのパラメータ設定方法を使用して、Sqlの?番号プレースホルダにパラメータ値を設定します.たとえば、ps.setInt(0,parameterValue)は、反射を用いてパラメータオブジェクトからitemオブジェクトのname属性値を取得します.