MyBatis가 JDBC 데이터 구동을 통해 생성한 실행 문장 문제

2712 단어 mybatisjdbc실행 문
우리가 프로그래밍하는 과정에서 대부분은 매우 뛰어난 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);
}
작업 번호에 따라 운전자의 이름을 업데이트할 뿐, 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 데이터 구동을 통해 생성한 실행 문장 문제입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기