程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> MyBatis經由過程JDBC數據驅動生成的履行語句成績

MyBatis經由過程JDBC數據驅動生成的履行語句成績

編輯:關於JAVA

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數據驅動生成的履行語句成績,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved