1. Métodos de mapeamento suportados pelo mybatis
Os métodos de mapeamento suportados pelo mybatis incluem arquivos mapper.xml baseados em XML e classes de interface mapper baseadas em Java. Existem quatro principais anotações de métodos de interface: @Insert, @Delete, @Update e @Select
2. Como mapear usando anotações de interface
Os seguintes experimentos são todos baseados em tabelas t_user e estruturados da seguinte forma:
2.1 Aumento @Insert
Basicamente, existem três esquemas para isso: designação manual (camada de aplicação), chave primária auto-adicionável (tabela única da camada de dados) e chave primária de seleção (tabela múltipla da camada de dados).
1. Especificar manualmente a chave primária na camada de aplicação
O método manual não trata a chave primária de forma diferente e dará um valor à chave primária quando a camada de aplicação gera o objeto antes da inserção, o que não é diferente do campo normal quando inserido.
No exemplo acima, mybatis não sabe qual campo é a chave primária e id é o campo da chave primária, mas não é tratado de forma diferente.
Note que o método #{username} é usar User como contexto atual, para que, ao acessar os atributos de User, você possa escrever diretamente o nome do atributo.
2. A tabela adiciona a chave primária
A chave primária auto-incrementante corresponde ao preenchimento da chave primária na configuração XML, um exemplo simples:
Use Option para corresponder às propriedades do conjunto de tags select em XML, userGeneratordKeys para indicar que você deseja usar uma chave primária auto-incrementante, e keyProperty para especificar o nome do campo da chave primária.
A chave primária auto-incrementante utiliza as características auto-incrementantes do banco de dados subjacente.
3. Selecione a tonalidade primária
Selecione a chave primária para gerar um valor a partir da camada de dados e use esse valor como valor da chave primária.
2.2 Exclua @Delete
Ao deletar, basta escrever a condição no valor da anotação @Delete e devolver um tipo int como o número de registros que foram deletados com sucesso.
2.3 Mudança @Update
Ao modificar, basta escrever a instrução SQL no valor da @Update e devolver um tipo int para indicar o número de linhas de registro modificadas.
2.4 Verificar @Select
A consulta é um pouco mais complicada, porque a consulta envolve como definir os campos encontrados para o objeto, e geralmente existem três maneiras:
1. Especificar manualmente um alias na instrução SQL para corresponder
Ao escrever instruções SQL, atribua manualmente um alias a cada campo para corresponder aos atributos do objeto, o que é adequado para situações onde o nome do campo da tabela e o nome do atributo do objeto são muito diferentes e não há muitos campos da tabela.
2. Usar a transformação automática de sublinhado do mybatis
mybatis tem uma opção chamada mapUnderscoreToCamelCase que se aplica quando o nome do campo na tabela é igual ao nome do atributo do objeto, mas com a diferença entre sublinhado e escrita de hump.
Após configurar mapUnderscoreToCamelCase, mybatis tentará converter o sublinhado em uma hump ao definir os dados encontrados no ResultSet para o objeto, e então costura o conjunto na frente para definir os atributos.
Ligue a conversão:
Então faça a consulta:
Olhando para o resultado impresso, birth_day atributos são preenchidos no objeto:
3. Use o ResultMap
Se o nome do campo da tabela e o nome do atributo do objeto não forem muito parecidos, e houver muitos campos na tabela, o ResultMap deve ser usado para adaptação.
@Results corresponde ao ResultMap em XML, e você pode especificar um id para ele, que pode ser usado para referenciar em outros lugares, como referenciar os Resultados acima:
Use @ResultMap para referenciar um ResultMap existente, que pode ser definido em Java usando anotações @Results ou em XML usando tags resultMap.
2.5 Código de exemplo
User.java
UserMapper.java
3. Resumo
Vantagens de usar anotações de interface:
1. É mais conveniente e rápido escrever instruções de mapeamento
Desvantagens de usar anotações de interface:
1. É adequado para configurações relativamente simples, e a interface não pode ser feita quando é muito complicada.
2. Não conseguir usar SQL dinâmico, é meio de mau gosto.
|