Problemas encontrados na operação de paginação MybatisPlus
1. O surgimento de problemas
Depois que a consulta de paginação do funcionário for gravada, o teste será executado e um erro será relatado:数据库异常,操作失败!
2. Verifique a instrução SQL de acordo com as instruções
Em primeiro lugar, suspeite: o serviço MySQL não foi iniciado, ou o servidor está fora do ar, ou há um problema com a ortografia da instrução SQL.
Copiei o log SQL do console para o Navicat e a exclusão LIMIT 10;
conseguiu produzir resultados, o que basicamente eliminou esse problema. (A importância dos logs deve estar ativada!!!)
3. Verifique versões e configurações de dependências
Então suspeitei: há algo errado com a configuração do MyBatisPlus. Depois de verificar as informações da versão e o conteúdo da configuração do MyBatisPlus, sinto que há pouca possibilidade de erro aqui.
4. Encontre informações específicas sobre erros
Eu queria verificar os resultados do erro no Idea e descobri que não havia nenhuma mensagem de erro no Idea.
Portanto, infere-se que esta mensagem de erro vem da classe de tratamento de exceção global escrita por mim. Então entrei no método global de tratamento de exceções e tentei imprimir as informações da exceção:
package com.sky.server.config.exception;
import com.sky.server.pojo.RespBean;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
/**
* 全局异常处理
*/
@RestControllerAdvice
public class GlobalException {
@ExceptionHandler(SQLException.class)
public RespBean mySqlException(SQLException e){
if (e instanceof SQLIntegrityConstraintViolationException){
return RespBean.error("SQL完整性约束违反异常: 该数据有关联数据,操作失败!");
}
/** 添加内容,打印异常信息 **/
System.out.println("数据库异常具体信息为:");
System.out.println(e.getMessage());
/** 添加内容,打印异常信息 **/
return RespBean.error("数据库异常,操作失败!");
}
}
Após a execução, o resultado impresso é: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 10' at line 37
Análise: Há um problema próximo ao LIMIT 10. Então descobri que havia um ponto e vírgula extra " "
escrito após e.id no final da instrução SQL. Basta excluir o ponto e vírgula.;
5. Resumo
Na verdade, esse erro não é um grande problema, mas ainda existem alguns pontos que precisam de atenção:
- Se você não estiver familiarizado com a instrução SQL, poderá localizar o problema com a instrução SQL no início.
- Se houver um erro no campo de configuração XML, uma mensagem de erro será informada no console do Idea.
- Quando o resultado é um erro, mas não há nenhuma mensagem de erro no console, significa que a exceção foi capturada e processada. Imprimir a mensagem de exceção geralmente é o mais útil.
- Eu não escrevi " " ao fazer a paginação antes
;
, então esse problema não ocorreu.;
Sempre pensei que não havia problema em escrever ou não "" no final da instrução SQL escrita no arquivo XML do MyBatisPlus . Este incidente me lembra de não escrever ";
" no final da instrução SQL.