MyBatis가 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);
}
작업 번호에 따라 운전자의 이름을 업데이트할 뿐, sql 서버 모니터링으로 검출된 sql 문장은 대체로 다음과 같다.
(@P0 nvarchar(4000),@P1 nvarchar(4000))update D_DriverInfo
SET DriverName = @P0,
WHERE Ucode=@P1
물론 여기 제 데이터베이스 연결열을 붙여보겠습니다.
jdbc\:sqlserver\://127.0.0.1;databaseName\=new;
이때의 실행 계획은 다음과 같다.https://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 데이터 구동을 통해 생성한 실행 문장 문제입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Mybatis가 키 id를 삽입하는 방법을 되돌려줍니다.mapper의 xml 파일에useGeneratedKeys 구성 KeyProperty를 사용하여 Id로 돌아가면 됩니다. PS: Mybatis의 insert에서 키 ID를 반환하는 방법 1、XyzMapper.xml 또...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.