MyBatis經由過程JDBC數據驅動生成的履行語句成績。本站提示廣大學習愛好者:(MyBatis經由過程JDBC數據驅動生成的履行語句成績)文章只能為提供參考,不一定能成為您想要的結果。以下是MyBatis經由過程JDBC數據驅動生成的履行語句成績正文
我們編程的進程中年夜部門應用了很精彩的ORM框架,例如:MyBatis,Hibernate,SpringJDBC,然則這些都離不開數據驅動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=string,jdbcType=VARCHAR,typeHandler=com.sypro.earth.typehandler.ExampleTypeHandler} </where> </update>
Test代碼以下:
@Test public void Test8(){ DriverInfo driverInfo=new DriverInfo(); driverInfo.setDriverName("汪小二"); driverInfo.setUcode("TY888888"); driverInfoMyMapper.updateDriverInfoByUcode(driverInfo); }
只是依據工號更新一下司機的姓名,然則用sqlserver監控檢測到的sql語句年夜體以下:
(@P0 nvarchar(4000),@P1 nvarchar(4000))update D_DriverInfo SET DriverName = @P0, WHERE Ucode=@P1
固然這裡我要貼一下我的數據庫銜接串:
jdbc\:sqlserver\://127.0.0.1;databaseName\=new;
這時候候的履行籌劃可以看一下:
http://www.jb51.net/article/90264.htm
可以看到很慢,然則經由過程略微修正一下銜接字符串:
jdbc\:sqlserver\://127.0.0.1;databaseName\=new;sendStringParametersAsUnicode=false
然後履行一下測試代碼,可以看到
(@P0 varchar(8000),@P1 varchar(8000))update D_DriverInfo SET DriverName = @P0, WHERE Ucode=@P1
批量更新履行速度顯著改良,至於為何改和改的利害請看以下官網文檔
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
以上所述是小編給年夜家引見的MyBatis經由過程JDBC數據驅動生成的履行語句成績,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!