Introdução a Mybatis
Mybatis é um projeto de código aberto do Apache. Em 2010, este projeto foi transferido da Apache Software Foundation para o Google Code e foi renomeado Mybatis. Ele suporta excelentes estruturas de camada de persistência para consultas SQL comuns, procedimentos armazenados e mapeamento avançado. Mybatis elimina as configurações manuais de quase todo o código e parâmetros JDBC e pesquisam conjuntos de resultados. O Mybatis usa XML simples ou anotações para configuração e mapeamento original para mapear as interfaces e os Pojos de Java (objetos Java antigos simples) em registros no banco de dados.
Introdução ao Mybatis Interceptor
Mybatis fornece uma função de plug -in. Embora seja chamado de plug -in, na verdade é uma função interceptadora. O Mybatis permite interceptar chamadas em um determinado ponto durante a execução de uma declaração mapeada. O Mybatis nos fornece uma interface interceptadora, implementando essa interface, podemos definir nosso próprio interceptador.
Mybatis chama quatro tipos de métodos por padrão:
1.Executor (atualização, consulta, Flushstatements, Commit, Rollback, Gettransaction, Close, IsClose)
2. ParameterHandler (GetParameterObject, setParameters)
3.ResultSetHandler (HandleResultSets, manuseartutpParameters)
4.StatementHandler (Prepare, parametrize, lote, atualização, consulta)
Os 4 acima são todos métodos de configuração. Esses métodos serão executados em uma operação de Mybatis (add, excluir, modificar e consultar). A ordem da execução é executora, parâmetrohandler, ResultetHandler e DeclarationHandler.
A definição de uma interface é:
Entre esses três métodos, o plug -in é usado para a construção do processador, a interceptação é usada para lidar com as classes de proxy e as configurações de propriedades de interceptor de setproperties.
A classe do plug -in implementa a interface InvocationHandler e retorna a classe de proxy dinâmica de uma JDK. Para o método WRAP do plugin:
Determine se o objeto de destino atual possui uma interface que precisa ser interceptada. Caso contrário, ele retorna o próprio objeto de destino e, se houver, retorna um objeto proxy.
O InvocationHandler do objeto Proxy é um plug -in. Quando o objeto de destino executa o método da interface, se for executado através do objeto Proxy, o método de invocamento do InvocationHandler será chamado, que é o método de invasão do plug -in:
Se o método atualmente executado for um método definido que precisa ser interceptado, o objeto de destino, o método a ser executado e os parâmetros do método são encapsulados em um objeto de invocação e a invocação encapsulada é passada como parâmetros para o método de interceptação do interceptor atual. Se não houver necessidade de interceptar, o método atual será chamado diretamente.
Para o método getSignaturemap
O GetSignaturemap primeiro receberá a anotação de interceptação da interceptação, atravessando -o para obter o atributo de tipo e, em seguida, obter o método com o atributo do método e o atributo args com base nesse tipo e, finalmente Exemplos: Filtrar o método de atualização do Execor.Class produzirá uma chave como executro e um valor como uma instância de método, com parâmetros correspondentes ao MappedStatement e métodos de métodos.
Configurabilidade do interceptador: