Arquivo de configuração global MyBatis
O arquivo de configuração do MyBatis contém informações de configurações e propriedades que afetam profundamente o comportamento do MyBatis. Documento
A estrutura de nível superior é a seguinte:
configuração
• propriedades
• definições
• nomenclatura de tipo typeAliases
• manipulador de tipo typeHandlers
• fábrica de objetos objectFactory
• plugins
• ambientes
• variáveis de ambiente de ambiente
• gerenciador de transações transactionManager
• fonte de dados dataSource
• ID do fornecedor do banco de dados databaseIdProvider
• mapeadores
propriedades
mybatis pode usar propriedades para apresentar o conteúdo de arquivos de configuração de propriedades externas
resource: Introduzir recursos no classpath
url: Introduzir recursos no caminho da rede ou do disco
<properties resource="dbconfig.properties"></properties>
Caso as propriedades sejam configuradas em mais de um local, o MyBatis será carregado na seguinte ordem:
- As propriedades especificadas no corpo do elemento de propriedades são lidas primeiro.
- Em seguida, leia o arquivo de propriedades sob o classpath de acordo com o atributo resource no elemento properties ou leia o arquivo de propriedades de acordo com o caminho especificado pelo atributo url e substitua o atributo read com o mesmo nome. - Por fim, leia o atributo passado como um parâmetro de método e substitua o atributo de leitura com o mesmo nome.
definições
Estas são configurações de ajuste extremamente importantes no MyBatis e irão alterar o comportamento do tempo de execução do MyBatis.
configuração contém muitos itens de configuração importantes
configuração: usado para definir cada item de configuração
nome: definir o nome do item
valor: o valor do item de configuração
mapUnderscoreToCamelCase: CamelCase chamado last_name -> lastName
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
nomenclatura de tipo typeAliases
typeAliases: você pode definir aliases para cada classe neste pacote em lotes
Os aliases não diferenciam maiúsculas de minúsculas
Crie um alias padrão, que é um nome de classe simples em minúsculas
typeAlias: alias de um tipo java
tipo: especifique o nome completo da classe do tipo a ser alias; o alias padrão é a letra minúscula do nome da classe: funcionário
alias: especifique um novo alias
pacote: aliases de lote para todas as classes em um determinado pacote
nome: especifique o nome do pacote (um alias padrão (nome da classe em minúsculas) para cada classe no pacote atual e todos os pacotes descendentes abaixo)
Problemas existentes:
Suponha que haja uma classe Employee sob o pacote de bean e um subpacote sob o pacote de bean e uma classe chamada Employee. Neste momento, os nomes das classes dos dois pacotes entrarão em conflito, então você também pode usar anotações para criar aliases para a classe
@Alias ("")
Public class Employee {}
É importante notar que MyBatis tem aliases de tipo correspondentes integrados para muitos tipos Java comuns. Eles não fazem distinção entre maiúsculas e minúsculas e não devemos usar apelidos existentes ao criar apelidos.
ambientes
Mybatis pode ser configurado com uma variedade de ambientes. O padrão especifica o uso de um determinado ambiente, que pode alcançar uma troca rápida
ambientes: configure as informações de um ambiente específico; deve haver duas tags, id representa o identificador único do ambiente atual
gerente de transação transactionManager
tipo: O tipo de gerenciador de transações [JDBC (usando as configurações de confirmação e reversão de JDBC, depende da conexão obtida da fonte de dados para gerenciar o escopo da transação). | GERENCIADO (não confirmar ou reverter uma conexão, deixe o contêiner gerencia a transação Todo o ciclo de vida (como o contexto do servidor de aplicativos JEE)]
JDBC: JdbcTransactionFactory
Um gerenciador de transações customizado pode implementar a interface TransactionFactory
fonte de dados dataSource
type: O tipo de fonte de dados [UNPOOLED (Não usar pool de conexão) | POOLED (Usar pool de conexão) | JNDI (Encontre a fonte de dados especificada em contêineres como EJB ou servidor de aplicativos)]
A fonte de dados customizada implementa a interface DataSourceFactory
No desenvolvimento real, usamos Spring para gerenciar a fonte de dados e configurar o controle de transação para cobrir a configuração acima
ID do fornecedor do banco de dados databaseIdProvider
databaseIdProvider: diferentes instruções podem ser executadas de acordo com diferentes fornecedores de banco de dados.
tipo: tipo de banco de dados DB_VENDOR
A função é obter a identificação do fornecedor do banco de dados (o driver vem com ele), mybatis pode executar SQL diferente de acordo com a identificação do fornecedor do banco de dados
MYSQL Oracle SQL Server
valor: um alias para a identificação, conveniente para instruções SQL usarem o atributo databaseId para referência
DB_VENDOR
- Será definido pela string retornada por DatabaseMetaData # getDatabaseProductName (). Uma vez que esta string é geralmente muito longa e diferentes versões do mesmo produto retornarão valores diferentes, é melhor definir um alias de atributo para torná-lo
Encurtar
• As regras de correspondência MyBatis são as seguintes:
- 1. Se a tag databaseIdProvider não estiver configurada, então databaseId = null
- 2. Se a tag databaseIdProvider estiver configurada, use o nome configurado na tag para corresponder às informações do banco de dados e defina databaseId = o valor especificado pela configuração na correspondência, caso contrário, ainda será nulo
- 3. Se o databaseId não for nulo, ele encontrará apenas a instrução SQL que configura o databaseId
- 4. MyBatis irá carregar todas as instruções sem o atributo databaseId e com o atributo databaseId correspondente ao banco de dados atual. Se a mesma instrução com databaseId e sem databaseId for encontrada ao mesmo tempo, o último será descartado.
mapeadores
mapeador: registra um mapeamento sql
Cadastre o perfil
recurso: referencie o arquivo de mapeamento sql no classpath
url: Use o arquivo de mapeamento sql no caminho da rede ou no caminho do disco
Interface de registro
classe: interface do aplicativo citada
1. Arquivo de mapeamento de interface. O nome do arquivo de mapeamento deve ser igual ao nome da interface e colocado no mesmo diretório
2. Não há arquivo de mapeamento sql, todo o sql é escrito na interface com anotações
As anotações são escritas na interface
Recomendação: É mais importante e complicado escrever arquivos de mapeamento sql na interface Dao, não é importante e simples, você pode usar anotações para desenvolvimento rápido
pacote: registro de lote
arquivo de mapeamento sql
namespace: namespace; especificado como o nome completo da classe da interface
id: identificador único
resultType: tipo de valor de retorno
# {id}: Retire o valor id do parâmetro passado
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="employee" >
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="mysql">
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="employee" databaseId="oracle">
select * from tbl_employee where id = #{id}
</select>
</mapper>
Resumindo
1. A interface está programando
Primitivo: Dao -----> DaoImpl
Mybatis: Mapper -----> xxMapper.xml
2. SqlSession representa uma sessão com o banco de dados, que deve ser fechada quando usada
3. SqlSession, assim como a conexão, não é segura para thread. Você deve obter um novo objeto toda vez que usá-lo
4. A interface do mapeador não possui uma classe de implementação, mas Mybatis irá gerar um objeto proxy para esta interface (vinculando a interface e xml)
EmployeeMapper empMapper = SqlSession.getMapper (Employee.class);
5. Dois arquivos de configuração importantes
Arquivo de configuração global Mybatis; contém informações de pool de conexão de banco de dados, informações do gerenciador de transações, informações de operação do sistema
arquivo de mapeamento sql: salva as informações de mapeamento de cada instrução SQL
Extrair sql