A maior parte do nosso processo de programação usa excelentes estruturas ORM, como Mybatis, Hibernate, Springjdbc, mas essas são inseparáveis com o apoio do JDBC orientado a dados. Embora seja muito conveniente de usar, é realmente difícil encontrar alguns problemas, como o problema que me incomodou não dormir bem a noite toda. O JDBC gera dados de execução. Vamos dar uma olhada nos detalhes.
Normalmente, usamos a estrutura Mybatis para operar bancos de dados relacionais, e a básica é o Operações CRUD. Atualmente, a empresa está usando o banco de dados SQLServer, mas tenho um problema quando estou executando a operação de atualização. A situação específica é a seguinte:
Mapper.xml Conteúdo:
<update id = "updatedriverinfobyucode" parametertype = "com.sypro.earth.model.driverinfo"> atualizar d_driverinfo <Set> <se test = "drivername! = null"> driverName = #{Drivername, JDBCType = nvarchar}, </f> </set> <where> ucode = #{ucode, javatype = string, jdbctype = varchar, typeHandler = com.sypro.ewth.typehandler.exampletyphandler} <// O código de teste é o seguinte:
@Testpublic void test8 () {driverInfo driverInfo = new DriverInfo (); driverInfo.setDriverName ("wang xiaoer"); driverinfo.setucode ("ty888888"); Acabei de atualizar o nome do motorista de acordo com o número de trabalho, mas as instruções SQL detectadas usando o SQL Server para monitorar são aproximadamente as seguintes:
(@P0 nvarchar (4000),@p1 nvarchar (4000)) update d_driverinfoset drivername =@p0, onde ucode =@p1
Claro, quero postar minha string de conexão com o banco de dados aqui:
JDBC/: SQLSERVER/: //127.0.0.1; DatabaseName/= new;
Você pode verificar o plano de execução neste momento:
//www.vevb.com/article/90264.htm
Pode -se observar que é muito lento, mas modificando um pouco a string de conexão:
JDBC/: SQLSERVER/: //127.0.0.1; DatabaseName/= new; sendStringParameterSAsunicode = false
Em seguida, execute o código de teste e você pode ver
(@P0 varchar (8000),@p1 varchar (8000)) Atualizar d_driverinfoset drivername =@p0, onde ucode =@p1
A velocidade de execução das atualizações de lote foi significativamente melhorada. Quanto ao motivo pelo qual as mudanças e os prós e contras das alterações, consulte o documento oficial do site abaixo.
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
O exposto acima é o problema da declaração de execução gerada pelo MyBatis através do driver de dados JDBC introduzido pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!