春とマイバティスの統合
統合のアイデア
Springは、Singletonを介してSQLSessionFactoryを管理する必要があります。
SpringとMyBatisは、プロキシオブジェクトを生成し、SQLSessionFactoryを使用してSQLSessionを作成します。 (SpringとMybatisの統合は自動的に完了します)
持続層のマッパーは、春までに管理する必要があります。
環境を統合します
新しいJavaプロジェクトを作成する(実際に開発されたエンジニアリング構造に近い)
瓶パッケージ:
MyBatis3.2.7 JARパッケージ
spring3.2.0 jarパッケージ
MyBatis and Spring Integration Package:初期のIbatisとSpringの統合はSpringによって提供され、MyBatisによってMyBatisとSpringの統合が提供されました。
すべてのjarパッケージ(springmvcを含む)
エンジニアリング構造
ステップ1:sqlsessionFactoryを統合して構成します
ApplicationContext.xmlでsqlsessionFactoryとデータソースを構成します
SQLSessionFactoryは、MyBatisとSpringの統合パッケージの下にあります。
<! - 構成ファイルの読み込み - > <コンテキスト:プロパティプレイスホルダーlocation = "classpath:db.properties" /> <! - データソース、dbcp-> <bean id = "datasource" destroy-method = "close"> <プロパティ名= "driverclassname" value = "$ {jdbc.driver} value = "$ {jdbc.url}" /> <プロパティ名= "username" value = "$ {jdbc.username}" /> <プロパティname = "password" value = "$ {jdbc.password}" /> <プロパティ名= "maxactive" value = "10" /> < sqlsessinfactory - > <bean id = "sqlsessionfactory"> <! - mybatis configuration file-> <property name = "configlocation" value = "mybatis /sqlmapconfig.xml" /> <! - データソース - > <プロパティname = "DataSource" ref = "DataSource" /> < /bean>オリジナル開発(春との統合後)
sqlmap/user.xml
sqlmapconfig.xmlにuser.xmlをロードします
dao(クラス継承sqlsessiondaosupportを実装)
以前は、SQLSessoinFactoryを注入し、春まで注入するために必要なDAOインターフェイス実装クラスが必要でした。
ここでは、Springを使用して構成方法を宣言し、DAOのBeanを構成します。
userdaoimplを実装してクラスを実装します
DAOを構成します
ApplicationContext.xmlでDAOインターフェイスを構成します
<! - 元のDAOインターフェイス - > <Bean Id = "userdao"> <プロパティ名= "sqlsessionfactory" ref = "sqlsessionfactory"/> </bean>
テスト手順
source_folder/userdaoimpltest.javapublic class userdaoimpltest {private applicationcontext applicationcontext; //セットアップ方法でスプリングコンテナを取得@beforepublic void setup()throws {applicationcontext = new classpathxmlapplicationcontext( "spring/applicationcontext.xml";} testfinduserbyid()throws exception {userdao userdao =(userdao)applicationContext.getBean( "userdao"); // call user users user = userdao.finduserbyid(1); system.out.println(user);}}}マッパーエージェントの開発
usermapper.xmlおよびusermapper.java
前のプロジェクトをコピーして、パッケージパスを削除するだけです。
MapperFactoryBeanを介してプロキシオブジェクトを作成します
UserMapperはインターフェイスタイプではないため、MapperFactoryBeanを使用してインターフェイスタイプを生成する必要があります
この方法の問題:
マッパーごとに構成する必要があります。
mapperscannerconfigurer経由のマッパースキャン(推奨)
* BasePackageプロパティを通ってマッパースキャンパスを構成した後、sqlmapperconfig.xmlでスキャンパスを構成する必要はありません。
sqlSessionFactoryBeanNameプロパティはここで使用されます。SQLSessionFactoryプロパティが構成されている場合、データベース構成ファイルとデータソース構成が最初にロードされない(DB.Properties)
テストコード
リバースエンジニアリング
MyBaitsは、プログラマーがSQLステートメントを自分で作成することを要求しています。 MyBatisの役人は、MyBatis実行に必要なコードを自動的に生成するためのリバースエンジニアリングを提供します(mapper.java、mapper.xml、po ..)
実際のエンタープライズ開発では、一般的に使用されるリバースエンジニアリング方法:データベースのテーブルのためにJavaコードを生成します。
リバースエンジニアリングをダウンロードしてください
リバースエンジニアリングの使用方法(使用方法)
Javaプログラム方法を使用することをお勧めしますが、開発ツールに依存しません。
コード構成ファイルを生成します(変更する必要がある4つの場所)
POクラスが生成される場所:cn.itcast.ssm.po
マッパーマッピングファイルが生成される場所:cn.itcast.ssm.mapper
生成されたマッパーインターフェイスの場所:cn.itcast.ssm.mapper
データベーステーブルを指定します。
<Table TableName = "items"> </table> <table tablename = "orders"> </table> <table tablename = "orderdetail"> </table> <table tablename = "user"> </table> <?xmlバージョン= "1.0"エンコード= "utf-8"?> <構成1.0 // en "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <generatorconfiguration> <コンテキストid =" testable "targetruntime =" mybatis3 "> <commentgenerator> <commentgenerator> <! value = "true"/> </commentgenerator> <! - データベース接続に関する情報:ドライバークラス、接続アドレス、ユーザー名、パスワード - > <jdbcconnection driverclass = "com.mysql.jdbc.driver" connectionurl = "jdbc:mysql:// localhost:3306/mybatis" userid = "root" password = "mysql"> </jdbcconnection> <! - <jdbcconnection driverclass = "oracle.jdbc.oracledriver" connectionurl = "jdbc:oracle:thin:@127.0.0.1:1521:yycg" usecg "yycg"> < FALSE、JDBC 10進数および数値タイプは整数に解決します。真実の場合、JDBC 10進数と数値タイプはjava.math.bigdecimalに解決します - > <javatyperesolver> <プロパティ名= "forcebigdecimals" value = "false" /> < /javatyperesolver> < /javatyperesolver> < TargetPackage = "cn.itcast.ssm.po" targetproject = "./ src"> <! - enableSubpackages:schemaをパッケージの接尾辞として使用するかどうか - > <プロパティ名= "balue =" false " /> <! - 値が返された後のスペースの前後のスペース/> </javamodelgenerator> <! - ターゲットプロジェクト:マッパーマップファイルが生成される場所 - > <sqlmapgeneratorターゲットパッケージ= " /> </sqlmapgenerator> <! - ターゲットパッケージ:マッパーインターフェイスの位置生成 - > <javaclientgenerator type = "xmlmapper" targetpackage = "cn.itcast.sssmapper"ターゲットプロジェクト= "./ src"> <!名前= "enablesubPackages" value = "false"/> </javaclientgenerator> <! - データベーステーブルを指定 - > <table tablename = "items"> </<table tablename = "orders"> </table> <table tablename = "orderdetail"> </table> <テーブル>
ジェネレーターを実行します
生成されたコード
生成されたコードを使用します
生成されたプロジェクトの生成コードを独自のプロジェクトにコピーする必要があります。
itemsmapperのテスト方法
//カスタム条件クエリ@testpublic void testselectbyexample(){itemsexample itemsexample = new itemsexample(); // cronttion query条件を構築query条件Itemsexample.criteria criteraia = itemsexample.createcriteria(); Criteria.andname quite( "note 3"); itemsmapper.selectbyexample(itemsexample); system.out.println(list);} // query @testpublic voidプライマリキーtestselectbyprimarykey(){itemsアイテム= itemsmapper.selectbyprimarykey(1); system.out.out.println(アイテム);} = new items(); items.setName( "Mobile"); items.setprice(999f); itemmapper.insert(items);} //データ@testpublic void testupdatebyprimarykey(){//すべてのフィールドを更新する、最初に照会してからquiteアイテムを更新する必要があります。 cup "); itemsmapper.updatebyprimarykey(items); //着信フィールドが空でない場合は、この方法をバッチ更新で使用します。最初にクエリをしてから//itemsmapper.updatebyprimarykeyselectuctive(record);}を更新する必要はありません。上記は、SpringとMybatisの統合とリバースエンジニアリングの簡単な分析です。これが役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!