MyBatis通過(guò)JDBC數(shù)據(jù)驅(qū)動(dòng)生成的執(zhí)行語(yǔ)句問(wèn)題
我們編程的過(guò)程中大部分使用了很出色的ORM框架,例如:MyBatis,Hibernate,SpringJDBC,但是這些都離不開數(shù)據(jù)驅(qū)動(dòng)JDBC的支持。雖然使用起來(lái)很方便,但是碰到一些問(wèn)題確實(shí)很棘手,就比如困擾我一宿沒(méi)睡好覺(jué)的問(wèn)題,jdbc生成執(zhí)行數(shù)據(jù),具體的我們看一下。
通常我們用MyBatis框架來(lái)操作關(guān)系型數(shù)據(jù)庫(kù),基本的也就是crud操作。目前公司使用的是SqlServer數(shù)據(jù)庫(kù),但是我在進(jìn)行更新操作的時(shí)候出現(xiàn)一個(gè)問(wèn)題,具體情況如下:
mapper.xml內(nèi)容:
<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);
}
只是根據(jù)工號(hào)更新一下司機(jī)的姓名,但是用sqlserver監(jiān)控檢測(cè)到的sql語(yǔ)句大體如下:
(@P0 nvarchar(4000),@P1 nvarchar(4000))update D_DriverInfo SET DriverName = @P0, WHERE Ucode=@P1
當(dāng)然這里我要貼一下我的數(shù)據(jù)庫(kù)連接串:
jdbc\:sqlserver\://127.0.0.1;databaseName\=new;
這時(shí)候的執(zhí)行計(jì)劃可以看一下:
http://www.dhdzp.com/article/90264.htm
可以看到很慢,但是通過(guò)稍微修改一下連接字符串:
jdbc\:sqlserver\://127.0.0.1;databaseName\=new;sendStringParametersAsUnicode=false
然后執(zhí)行一下測(cè)試代碼,可以看到
(@P0 varchar(8000),@P1 varchar(8000))update D_DriverInfo SET DriverName = @P0, WHERE Ucode=@P1
批量更新執(zhí)行速度明顯改善,至于為什么改以及改的利弊請(qǐng)看如下官網(wǎng)文檔
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通過(guò)JDBC數(shù)據(jù)驅(qū)動(dòng)生成的執(zhí)行語(yǔ)句問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- SpringBoot多數(shù)據(jù)源配置詳細(xì)教程(JdbcTemplate、mybatis)
- jdbc和mybatis的流式查詢使用方法
- MyBatis中的JdbcType映射使用詳解
- MyBatis JdbcType 與Oracle、MySql數(shù)據(jù)類型對(duì)應(yīng)關(guān)系說(shuō)明
- Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 實(shí)現(xiàn)分庫(kù)分表功能
- SpringBoot 整合jdbc和mybatis的方法
- Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性
- MyBatis常用的jdbcType數(shù)據(jù)類型
- MyBatis配置的應(yīng)用與對(duì)比jdbc的優(yōu)勢(shì)
相關(guān)文章
Spring Boot中配置定時(shí)任務(wù)、線程池與多線程池執(zhí)行的方法
這篇文章主要給大家介紹了關(guān)于Spring Boot中配置定時(shí)任務(wù)、線程池與多線程池執(zhí)行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解
這篇文章主要介紹了System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
spring cloud gateway使用 uri: lb://方式配置時(shí),服務(wù)名的特殊要求
這篇文章主要介紹了spring cloud gateway使用 uri: lb://方式配置時(shí),服務(wù)名的特殊要求,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
java實(shí)現(xiàn)對(duì)map的字典序排序操作示例
這篇文章主要介紹了java實(shí)現(xiàn)對(duì)map的字典序排序操作,結(jié)合實(shí)例形式分析了java參照微信官網(wǎng)算法實(shí)現(xiàn)的字典序排序操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07
Java實(shí)現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2025-01-01

