プログラミングプロセスのほとんどは、MyBatis、Hibernate、SpringJDBCなどの優れたORMフレームワークを使用していますが、これらはデータ駆動型のJDBCのサポートと切り離せません。使用するのは非常に便利ですが、一晩中よく眠れない問題など、いくつかの問題に遭遇することは本当に困難です。 JDBCは実行データを生成します。詳細を見てみましょう。
通常、MyBatisフレームワークを使用してリレーショナルデータベースを操作し、基本的なデータベースはCRUD操作です。現在、同社はSQLServerデータベースを使用していますが、更新操作を実行しているときに問題があります。特定の状況は次のとおりです。
mapper.xmlコンテンツ:
<update id = "updatedriverinfobyucode" parametertype = "com.sypro.earth.model.driverinfo"> update d_driverinfo <set> <if test = "drivername!= null"> drivername = #{drivername、jdbctype = nvarchar}、</if> </set> <where> ucode =#{ucode、javatype = javatype = jdbctype = varchar = com.sypro.earth.typehandler.exampletypehandler} <テストコードは次のとおりです。
@testpublic void test8(){driverInfo driverInfo = new driverInfo(); driverInfo.setDrivername( "Wang Xiaoer"); driverInfo.setucode( "ty8888888"); driverinfomymapper.updededriverinfobyucode(driverinfo);}作業番号に従ってドライバーの名前を更新するだけですが、SQL Serverを使用して監視するために検出されたSQLステートメントは次のとおりです。
(@p0 nvarchar(4000)、@p1 nvarchar(4000))d_driverinfoset drivername =@p0、ucode =@p1を更新します
もちろん、ここにデータベース接続文字列を投稿したい:
JDBC/:sqlServer/://127.0.0.1; databasename/= new;
この時点で実行計画を確認できます。
//www.vevb.com/article/90264.htm
非常に遅いことがわかりますが、接続文字列を少し変更することで:
jdbc/:sqlserver/://127.0.0.1; databasename/= new; sendstringparametersasunicode = false
次に、テストコードを実行すると表示されます
(@p0 varchar(8000)、@p1 varchar(8000))d_driverinfoset drivername =@p0、ここでucode =@p1
バッチ更新の実行速度は大幅に改善されました。変更と長所と短所の変更については、以下の公式Webサイトドキュメントを参照してください。
https://technet.microsoft.com/zh-cn/library/ms378857%28sql.90%29.aspx
https://technet.microsoft.com/zh-cn/library/MS378988%28V=SQL.90%29.aspx
http://d.hatena.ne.jp/gnarl/20110706/1309945379
上記は、編集者が紹介したJDBCデータドライバーを介してMyBatisによって生成された実行ステートメントの問題です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!