Propriedades
São propriedades alternativas externalizadas, que também podem ser configuradas em um arquivo típico de configuração da propriedade Java ou passadas por elementos filhos dos elementos de propriedades. Por exemplo:
<Properties Resource = "org/mybatis/exemplo/config.properties"> <propriedade name = "userrame" value = "dev_user"/> <propriedade name = "senha" value = "f2fa3! 33tyyg"/> </souperties>
As propriedades nele podem ser usadas em todo o arquivo de configuração e propriedades substituíveis são usadas para implementar a configuração dinâmica. por exemplo:
<DataSource type = "pooled"> <propriedade name = "driver" value = "$ {driver}"/> <propriedade name = "url" value = "$ {url}"/> <names name = "nome de usuário" value = "$ {userName}"/> <name = "" "=" "$ {}"/}
Neste exemplo, o nome de usuário e a senha serão substituídos pelos valores definidos no elemento Propriedades. As propriedades de driver e URL serão substituídas pelos valores contidos no arquivo config.properties.
Configurações
1.Cacheenabled
Essa configuração permite que o mapeador global habilite ou desative o cache.
Valores válidos: verdadeiro, falso
Valor padrão: true
2.LazyLoadingEnabled
Habilite ou desative o carregamento preguiçoso globalmente. Quando desativado, todos os objetos associados são carregados instantaneamente.
Valores válidos: verdadeiro, falso
Valor padrão: true
3.AggressivelAzyLoading
Quando ativado, um objeto com uma propriedade de carregamento atrasada carregará totalmente qualquer propriedade quando chamado. de outra forma,
Cada atributo será carregado conforme necessário.
Valores válidos: verdadeiro, falso
Valor padrão: true
4.MULT IPLERESULTSETSENABLED
Permitir ou não permitir que vários conjuntos de resultados sejam devolvidos de uma declaração separada (requer motoristas adequados)
Valores válidos: verdadeiro, falso
Valor padrão: true
5.UsecolumnLabel
Use rótulos da coluna em vez de nomes de colunas. Diferentes drivers são convenientes para diferentes performances. Consulte a documentação do driver ou teste o método completo para determinar o driver usado.
Valores válidos: verdadeiro, falso
Valor padrão: true
6.UseGeneratedKeys
Permite que o JDBC suporte as teclas geradas. Precisa de uma unidade adequada. Se definido como true, esse cenário força as teclas geradas a serem usadas e, embora alguns motoristas se recusem a ser compatíveis, eles ainda são válidos (como o derby)
Valores válidos: verdadeiro, falso
Valor padrão: false
7.AutomappingBehavior
Especifica como o Mybatis mapeia automaticamente as colunas para campos/atributos. Parcial apenas mapeará automaticamente simples e não possui resultados aninhados.
Completo mapeará automaticamente quaisquer resultados complexos (de pescoço ou não)
Valores válidos: nenhum, parcial, completo
Valor padrão: parcial
8.DefaultExecutyType
Configure o executor padrão. Não há nada de especial no atuador simples. O executor reutiliza reutiliza declarações de pré -processamento.
Executor de lote declarações de reutilização e atualização em lote Valores válidos: simples, reutilizados, lote
Valor padrão: simples
9.DefaultStatementTimeout
Defina o tempo de tempo limite, o que determina o tempo em que o driver aguarda uma resposta do banco de dados.
Valores válidos: qualquer, positivo, inteiro
Valor padrão: não definido (nulo)
Um exemplo de definição de elementos de informação, a configuração completa é a seguinte:
<friffings> <Configuração name = "Cacheenabled" value = "true"/> <Configuração name = "LAZYLOULLINGENLEFF" VALUE = "true"/> <Configuração name = "multipleResultSetSEnabled" value = "true"/> <effortGenen name = "USECOLumnLabel" value = "True"/<Nome da definição = "useGenerTeyKes" <Configuração name = "defaultExecutyType" value = "simples"/> <configuração name = "defaultStatementTimeout" value = "25000"/> </fields>
timealiases
Um alias de tipo é citar um nome curto para os tipos Java. Ele está relacionado apenas à configuração XML e é usado apenas para reduzir as partes redundantes do nome totalmente qualificado da classe. Por exemplo:
<typeAlias alias = "Author" type = "domain.blog.author"/> <typeAlias alias = "blog" type = "domain.blog.blog"/> <typeAlias Alias = "Comment" type = "domain.blog.blog.comment"/> <typealias "post" type = "" domain.blog.post "/> <typealias =" post "=" "domain.blog.post.postes"/> typealias = "post" = "" domain.blog.post.Post "/> typealias =" post "=" "domain.blog.post" type = "domain.blog.section"/> <typeAlias alias = "tag" type = "domain.blog.tag"/> </typealias>
Com essa configuração, o "blog" pode ser usado como arbitrariamente, em vez de onde "domain.blog.blog" é usado. Para tipos normais de Java, existem muitos alias do tipo embutido. Ambos são insensíveis ao caso e, devido a nomes sobrecarregados, você deve prestar atenção ao manuseio especial de tipos nativos.
TypeHandlers
Se mybatis define um parâmetro em uma instrução de pré -processamento ou obtém um valor do conjunto de resultados, o processador de tipo é usado para converter o valor obtido no tipo Java da maneira apropriada. A tabela a seguir descreve o processador do tipo padrão.
Você pode reescrever o processador de tipo ou criar seu próprio processador de tipo para lidar com tipos não suportados ou não padrão. Mas essa situação é bastante rara! !
ObjectFactory
Mybatis é feito usando uma instância do ObjectFactory toda vez que uma nova instância do objeto de resultado é criada. Se o mapa de parâmetros existir, o ObjectFactory padrão não funcionará mais do que instanciar a classe de destino usando o construtor ou construtor padrão com parâmetros. Se você deseja reescrever o ObjectFactory padrão, poderá criar o seu próprio. Exemplo omitido.
plugins
Mybatis permite interceptar chamadas executadas por declarações mapeadas em um determinado ponto. Por padrão, o mybatis permite que os plugins interceptem chamadas de método:
1.Executor
(Atualizar, consultar, Flushstatements, Commit, Rollback, Gettransaction, Close, IsClose)
2. ParameterHandler
(getParameTerObject, setParameters)
3.ResultSetHandler
(HandleResultSets, manuseartutpParameters)
4.StatementHandler
(Prepare, parametrize, lote, atualização, consulta)
Ambientes
Mybatis pode ser configurado com vários ambientes. Isso ajudará você a aplicar mapeamentos SQL em vários bancos de dados.
Uma pergunta muito importante a ser lembrada: você pode configurar vários ambientes, mas pode selecionar apenas um para cada instância SQLSessionFactory. Portanto, se você deseja se conectar a dois bancos de dados, precisará criar duas instâncias SQLSessionFactory, uma para cada banco de dados. E se forem três bancos de dados, você precisará de três instâncias e assim por diante.
Os elementos do ambiente definem como configurar o ambiente, por exemplo:
<ambientes default = "desenvolvimento"> <ambiente id = "desenvolvimento"> <transação value = "$ {nome de usuário}"/> <propriedade name = "senha" value = "$ {senha}"/> </datasource> </ambiente> </ambientes> Nota aqui:
1. ID do ambiente padrão (por exemplo: default = "desenvolvimento").
2. O ID do ambiente definido por cada elemento do ambiente (por exemplo: id = "desenvolvimento").
3. Configuração do gerenciador de transações (por exemplo: type = "jdbc").
4. Configuração da fonte de dados (por exemplo: Type = "Pooled").
TransactionManager
Existem dois tipos de gerentes de transação em mybatis (ou seja, tipo = "[jdbc | gerenciado]".
1.jdbc --- Essa configuração diretamente e simplesmente usa as configurações de confirmação e reversão do JDBC. Ele depende de conexões obtidas de fontes de dados para gerenciar o escopo da transação.
2. Managed --- Esta configuração não faz quase nada. Ele nunca comete ou revira uma conexão. E permite que o contêiner gerencie todo o ciclo de vida de uma transação (como o contexto do servidor de aplicativos Spring ou JEE). Por padrão, ele fecha a conexão. No entanto, alguns contêineres não querem isso; portanto, se você precisar impedi -lo da conexão, defina a propriedade ClosConnection como false. Por exemplo:
<transação
Nenhum gerente de transações requer propriedades. No entanto, são todos aliases de tipo e, para substituí -los, você precisa colocar seu próprio nome totalmente qualificado ou aliases de sua própria classe, que referenciam sua classe de implementação para a interface transactária.