Sobre o gerador Mybatis
O gerador Mybatis (MBG) é um gerador de código mybatis mybatis e ibatis. Ele pode gerar código para várias versões do mybatis e codificar após o ibatis 2.2.0. Ele pode introduzir as tabelas (ou tabelas) do banco de dados e, em seguida, gerar o objeto subjacente que pode ser usado para acessar as tabelas (múltiplas) das tabelas. Dessa forma, nenhum objetivo e arquivos de configuração são necessários ao interagir com as tabelas de banco de dados. O MBG resolve algumas operações simples (inserir, consultar, atualizar, excluir) que têm o maior impacto nas operações do banco de dados. Você ainda precisa SQL e objetos manuscritos na consulta da federação e nos procedimentos armazenados.
O gerador mybatis gerará:
Java Pojos As estruturas de mesa correspondentes podem incluir:
Haverá uma relação de herança apropriada entre essas classes. Observe que o gerador pode ser configurado para gerar hierarquias de diferentes tipos de pojos. Por exemplo, se você preferir, pode optar por gerar um objeto de entidade separado para cada tabela.
Mybatis/ibatis compatível com arquivos XML de mapeamento de SQL. O MBG gera SQL na configuração para operações simples de CRUD para cada tabela. As declarações SQL geradas incluem:
Dependendo da estrutura da tabela, as instruções geradas variarão (por exemplo, se não houver chave primária na tabela, o MBG não gerará a atualização pelo método da chave primária).
A classe cliente Java usará o objeto acima adequadamente e é opcional ao gerar a classe de cliente Java. O MBG gerará a seguinte classe cliente para Mybatis 3.x:
Uma classe de interface de mapeador que pode ser usada com mybatis 3.x
O MBG gerará a seguinte classe cliente para ibatis 2.x:
DAO Classe que está em conformidade com a estrutura da primavera.
Use apenas o DAO da API de mapeamento Ibatis SQL. Este DAO pode ser gerado nas duas maneiras a seguir: Forneça SQLMapClient através de métodos de construção ou injeção de setter.
Compatível com a DAO com a estrutura do Ibatis Dao (uma parte opcional do ibatis, que está desatualizada, recomendamos que você use a estrutura da primavera).
O gerador Mybatis pode funcionar bem em um ambiente de desenvolvimento iterativo e atuar como uma tarefa de formiga ou plug-in da Maven em um ambiente de construção contínuo. As seguintes coisas importantes a serem lembradas ao executar o MBG:
O MBG mesclará automaticamente XML que já existe e é duplicado com o arquivo recém -gerado. O MBG não substitui as modificações que você fez no XML que você gerou. Você pode executá -lo repetidamente sem se preocupar em perder suas alterações personalizadas. O MBG substituirá todos os elementos XML gerados em execuções anteriores.
O MBG não mescla arquivos Java, ele pode substituir arquivos existentes ou salvar arquivos recém -gerados em um nome exclusivo diferente. Você pode mesclar essas mudanças manualmente. Quando você usa o plug -in Eclipse, o MBG pode mesclar arquivos Java automaticamente.
Uso básico
O MBG conta principalmente em um arquivo de configuração XML. Primeiro, podemos recriar um novo projeto chamado MyBatisGenerator, criar três novos pacotes chamados Config, David.test e David.MBG. O pacote de configuração armazena principalmente os arquivos de configuração necessários no MyBatis real. Você pode copiar o mybatis_demo_config.xml no projeto nos capítulos anteriores e colocá -lo neste diretório, etc. para testar programas. Como o nome indica, David.test é armazenar os seguintes métodos e programas de teste comumente usados. Você também pode usar a classe de ferramentas Mybatisutils nos capítulos anteriores e criar a função principal correspondente para fins de teste. E o último David.MBG é o XML que vamos configurar hoje e o MBG gera arquivo de configuração.
Conforme mostrado na figura, criamos um novo arquivo de configuração chamado mbg_configuration.xml abaixo. Os detalhes são os seguintes:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration> <ClassPathentry Location = "./ lib /mysql-conector-java-5.1.26-bin.jar" /> <contexto id = "mybatisDemoFormySQL" TargetRuntime = "Mybatis3"> <!-Control Comentários-> <museverator> <!-Remover todos os comentários gerados automaticamente-> <! Para remover os registros de data e hora de todos os arquivos gerados automaticamente, padrão para false-> <propriedade name = "suprimeDate" value = "true" /> < /commentGenerator> <!-Control Database-> <jdbcConnection driverclass = "com.mysql.jdbc.driver" ConnectionUrl = "JDBC: MySQL: //127.0.0.1: 3306/mybatis_db? caracterencoding = utf8" userID = "root" senha = "David0110"/> <JavatypeResolver> <!-convert Decimal e número tipos de números no jdc no inteiro < /javatyperesolver> <!-modelo correspondente à tabela de banco de dados-> <javamodelGenerator TargetPackage = "David.model" TargetProject = "src"> <names name = "ENFLESUBPACKAGES" VALUE = "TRUE" /> <Nome da propriedade "" True ") <sqlmapgenerator TargetPackage = "David.Mappers" TargetProject = "Src"> <Propriedade name = "EnablesubPackages" value = "true" /> < /sqlmapGenerator> <!-Controle a interface mapper-> <JavacientGenerator STVOMIGET = "DAVER.INTERENTENTENTENTENTENTENTENTENTENTENTENTIONE =" ROOBTERPAPTERTAPERTAPERTAPTERAPTERAPRAPTERAPTERAPRAPTERAPTERAPTERAPRAPTERAPTERAPTERAPRAPTERAPTERAPTERAPTERAPTERAPTERAPTERAPTERAPTERAPTER = " name = "enablesubpackages" value = "true" /> <propriedade name = "MethodnamecalCulator" value = "estendido" /> < /javaclientGenerator> <!-Schema para o seu banco de dados, o nome do tabled é que o exemplo do nome do javabean "é o nome do nome" " domainObjectName = "Visitor" EnableCountByExample = "false" enableUpDateByExample = "false" enableteleteByExample = "false" EnableSelectByExample = "false" SelectByExampleQueryId = "false"> <GeratedKey Column = "Id" SQLSTATEMENT = "MySQLOM" /" <IGNORECOLUMN COLUMN = "Status" delimitedColumnName = "false"/> </ tabela> </xectlent> </generatorconfiguration>
Você pode notar que é principalmente esses nós
<ClassPathentry> => O local onde o pacote de driver JDBC é armazenado pode ser usado para usar caminhos relativos ou caminhos absolutos. Neste exemplo, o caminho relativo é usado.
<Context> => cumpriu a configuração de todas as tabelas em um banco de dados, pode haver vários contextos, uma configuração MySQL e uma configuração Oracle.
Os principais do nó <Contexto> são:
<CommentGenerator> => nós do gerador de comentários, os 2 sub-tábulos neste exemplo representam
supressorlcomments => se deve remover todos os arquivos de comentários gerados automaticamente
supressor => se deve remover os registros de data e hora de todos os arquivos gerados automaticamente, padrão para false
<jdbcconnection> => Informações de configuração de conexão do banco de dados
<navatyperesolver> => Converta os tipos de decimal e números no JDBC em java.math.bigdeciaml Representação
<JavamodelGenerator> => Configure sua classe de entidade Pojo, TargetPackage = "David.model", correspondendo ao seu registro, você pode nomeá -lo de acordo com o negócio real, TargetProject = "SRC". No ambiente Eclipse, o caminho para a pasta do projeto e origem é geralmente referido como o diretório SRC. Seu pacote será criado recentemente neste diretório. Se não for o ambiente do eclipse, o valor aqui deve ser um caminho real do sistema de arquivos. Se o caminho especificado não existir, um erro será relatado, porque o MBG não criará a pasta correspondente por si só
<sqlmapgenerator> => configure para gerar a entidade correspondente mapper.xml. Para mapper3.x, precisamos digitar = "xmlmapper"
<JavaclientGenerator> => Configurar gera a classe de interface correspondente, correspondente a uma série de instruções SQL do método CRUD no mapper.xml
<table> => Configure o banco de dados correspondente, que indica que o nome da classe de domínio (ou seja, o nome da classe de entidade) é desejado gerar. Neste exemplo, fechei todas as informações desnecessárias sobre geração de exemplo
Todas as informações acima podem ser verificadas no site oficial para obter os documentos correspondentes ou baixados no meu arquivo, com as instruções de configuração correspondentes e exemplos de aplicativos relacionados. Baixe o documento
Depois de configurar as informações acima, qual é a última etapa? Vamos executar este arquivo de script. Existem 4 maneiras na descrição oficial. O primeiro é através do método da linha de comando, o segundo e o terceiro são gerados através de ferramentas como ANT ou MAVEN. O último é gerado através do código Java. Usamos o método de gerar através da Java Barley. O método de adicionar um script gerado à classe Demorun é o seguinte:
private estático void generatEmbgConfiguration () { /** mybatis vem com ferramenta gerador para gerar a coisa correspondente* / list <string> avisos = new ArrayList <String> (); substituição booleana = true; Arquivo configfile = novo arquivo ("./ src/david/mbg/mbg_configuration.xml"); ConfigurationParser CP = novo ConfigurationParser (avisos); Configuração config = null; tente {config = cp.parseconfiguration (configfile); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } catch (xmlParseRexception e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } DefaultShellCallback RinBack = new DefaultShellCallback (Substruído); tente {mybatisGenerator mybatisGenerator = new MyBatisGenerator (config, retorno de chamada, avisos); mybatisGenerator.Generate (NULL); } catch (invalidConfigurationException e) {// TODO GATE GENERADO AUTOGERATO E.PRINTSTACKTRACE (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } catch (interruptedException e) {// TODO BLOCO DE CATCH AUTOGERATIDO E.PRINTSTACKTRACE (); } System.out.println ("A configuração Mybatis foi gerada com sucesso!"); } Após a execução, atualize o projeto, você descobrirá que o seguinte gera magicamente a configuração principal para você. A seção da caixa vermelha da figura abaixo:
Por fim, vamos usar os resultados gerados automaticamente. Podemos nos referir aos seis primeiros capítulos para adicionar o método de teste CRUD correspondente a Demorun da seguinte maneira:
/** Informações do visitante de consulta*/ public static void testgenerAtAdd () {SqlSession Session = mybatisutils.getSqlSession (); VisitorMApper Voperation = session.getMapper (visitormapper.class); Visitante visitante = novo visitante (); visitor.setVisitor_name ("hello2"); visitor.setemail ("[email protected]"); visitor.setCreateTime (new Date ()); int count = Voperation.insert (visitante); session.Commit (); Mybatisutils.closesession (sessão); Mybatisutils.showmessages (crud_enum.add, contagem); } /** Informações do visitante da consulta* / public static void testGenerateQuery (int id) {SqlSession Session = mybatisutils.getSqlSession (); VisitorMApper Voperation = session.getMapper (visitormapper.class); Visitante visitante = Voperation.SelectByPrimaryKey (ID); Mybatisutils.closesession (sessão); Mybatisutils.showmessages (Crud_enum.Query, 1); System.out.println (visitante); } public static void testGeneratedElete (int id) {SqlSession Session = mybatisutils.getSqlSession (); VisitorMApper Voperation = session.getMapper (visitormapper.class); int count = Voperation.DeleteByPrimaryKey (ID); session.Commit (); Mybatisutils.closesession (sessão); Mybatisutils.showmessages (crud_enum.delete, contagem); } public static void testGeReUpdate (int id) {SqlSession Session = mybatisutils.getSqlSession (); VisitorMApper Voperation = session.getMapper (visitormapper.class); Visitante visitante = Voperation.SelectByPrimaryKey (ID); System.out.println (visitante); Nome da string = visitor.getVisitor_name (); if (name.contains ("update")) {visitor.setVisitor_name (name.substring (0, name.indexof ("update"))); } else {visitor.setVisitor_name (nome + "update"); } int count = Voperation.UpDateByPrimaryKey (visitante); session.Commit (); Mybatisutils.closesession (sessão); Mybatisutils.showmessages (crud_enum.update, contagem); System.out.println (visitante); } Execute o programa de teste e o resultado é
Você acha que usar isso ajudou você a melhorar muito sua eficiência e não precisa se preocupar com configurações pesadas. Pelo menos você não precisa executar etapas repetitivas e desnecessárias. Seja deixado para as ferramentas para fazer^0^. Obviamente, no uso real, podemos precisar modificar as informações de classe correspondentes e os nomes de informações da interface após a geração. Obviamente, essas cargas de trabalho não são demais. Espero que esses conteúdos sejam úteis para os alunos que precisam configurá -los hoje.