Mybatis é um ORM semi-automático. Ao usar essa estrutura, mais carga de trabalho é escrever arquivos de mapeamento de mapeamento. Como a redação manual é fácil de cometer erros, podemos usar o Mybatis-Generator para nos ajudar a gerar arquivos automaticamente.
Engenharia reversa
1. O que é engenharia reversa
MyBaits exige que os programadores escrevam as próprias declarações SQL. O funcionário do Mybatis fornece engenharia reversa para gerar automaticamente o código necessário para a execução mybatis (mapper.java, mapper.xml, po ..)
Métodos comuns de engenharia reversa usados no desenvolvimento da empresa real:
O código Java é gerado devido à tabela do banco de dados.
2. Download de engenharia reversa
mybatis--generator-core-1.3.2-bdledle.zip
3. Como usar (pode usá -lo)
3.1 Executar engenharia reversa
Várias maneiras de executar a engenharia reversa fornecidas na documentação oficial
Executando o gerador mybatis
O gerador Mybatis (MBG) pode ser executado das seguintes maneiras:
(1) No prompt de comando com uma configuração XML
(2) como uma tarefa de formiga com uma configuração XML
(3) como um plugin maven
(4) De outro programa Java com uma configuração XML
(5) De outro programa Java com uma configuração baseada em Java
(6) Você também pode gerar código através do plug-in eclipse
Recomenda -se usar o método do programa Java (de outro programa Java com uma configuração XML) e não depende de ferramentas de desenvolvimento.
Abaixo está um projeto que gera arquivos reversos e copie os arquivos gerados automaticamente para o projeto original (isso é feito para parar de gerar diretamente no arquivo de origem e substituir o arquivo com o mesmo nome). A captura de tela do pacote de jar e a estrutura do projeto importada é a seguinte:
Como mostrado
3.2 Gere arquivos de configuração de código
generatorconfig.xml:
<? xml versão = "1.0" coding = "utf-8"?> <! doctype generatorconfigurationpublic "-// mybatis.org//dtd mybatis generator configuration 1.0 // pt "" http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd "> <generatorconfiguration> <context ID =" Testtables "TargetRuntime =" MyBatis3 "> <CommentGenerator> <!-Remover" value = "true"/> </commentGenerator> <!-Informações da conexão com o banco de dados: classe de driver, endereço de conexão, nome de usuário, senha-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" Connectionurl = "jdbc: mysql: // LocalHost: 3306/mybatis" userID = "root" senha = "1234"> </jdbcconnection> <!-<jdbcconnection driverclass = "oracle.jdbc.oracledriver" Connectionurl = "jdbc: oracle: thin:@127.0.1: 1521: yycg" userID = "yycg: yycg:"@127.0.1: 1521: yycg "userID =" yycn: "yycg" ""> Falso padrão, analise os tipos decimais e numéricos JDBC para inteiro e, quando verdadeiro, analise os tipos decimais e numéricos JDBC em java.math.bigdecimal-> <javatyperesolver> <nome da propriedade = "ForcebigDeCimals") -> <JavamodelGenerator TargetPackage = "cn.edu.hpu.ssm.po" TargetProject = "./ src"> <!-Ativa osbackagens: se deve deixar que o schema seja o nome do pacote do pacote-> <nome da propriedade = "ENLABLEGAGEGAGES" = "Falso" /> <! value = "true"/> </javamodelGenerator> <!-TargetProject: o local onde o arquivo de mapa do mapeador é gerado-> <sqlmapgenerator TargetPackage = "cn.edu.hpu.ssm.mapper" TargetProject = "/ src "> <!-EnablesubPackages: slowem para slowem para slowem: name = "enablesubpackages" value = "false"/> </sqlmapGenerator> <!-TargetPackage: localização da geração de interface do mapeador-> <javaclientGenerator type = "xmlMapper" TargetPackage = "cn.edu.hpu.sm.mapper" TargetProject =. suffix of the package --><property name="enableSubPackages" value="false" /></javaClientGenerator><!-- Specify database table--><table tableName="items"></table><table tableName="orders"></table><table tableName="orderdetail"></table><table tableName="user"></table><!-- <table schema = "" tableName = "sys_user"> </ table> <tabela schema = "" tableName = "sys_role"> </ table> <tabela schema = "" tableName = "sys_permission"> </tabela> <tabela Schema = "" TableName = "Sys_USER_ROLE"> TableName = "SYS_ROLE_PERMISSION"> </tabela>-> <!-Alguns campos de tabela requerem Java Type <tabela schema = "" tableName = ""> <colunnoverride column = "" javatype = ""/> </tabela>-> </context> </geratorconfiguration>
3.3 Execute o programa gerador
Generatorsqlmap.java:
importar java.io.file; importar java.util.ArrayList; importar java.util.list; importar org.mybatis.generator.api.mybatisgenerator; importação org.mybatis.generator.config.configuration; importLonfiMX.MyBatis.Generator.Config.Configurature; org.mybatis.generator.internal.DefaultShellCallback; public class GeradoresqlMap {public void generator () lança exceção {list <string> avisos = new ArrayList <String> (); generator; ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, avisos); mybatisGenerator.Generate (null);} public static void main (string [] args) lança exceção {try {generatorsqlmap geradoresqlmap = new generatorsqlmap (); generatorsqlmap.Generator ();}} {) {);Código gerado:
3.4 Usando o código gerado
Você precisa copiar o código gerado no projeto gerado para o seu próprio projeto. Vamos copiar os itensMapper.java e itensmapper.xml, itens e ItemSexample Classes em nosso projeto original.
Métodos de teste em itens
pacote cn.edu.hpu.ssm.test; importar org.junit.assert.fail; importar java.util.date; importar java.util.list; importar org.junit.before; importar org.junit.test; import org.springframework.Contet.AptLication; org.springframework.context.support.classPathXMLApplicationContext; importar cn.edu.hpu.ssm.mapper.itemsmapper; import cn.edu.hpu.ssm.po.items; import cn.edu.hpu.sM.Po.EmseseMsenEmsense; ApplicationContext; itens privados itens itensMapper; // anotação antes de chamar esse método antes de executar todos os métodos de teste desta classe @BeforePublic void setup () lança Exceção {ApplicationContext = new ClassThXMLApplicationContext ("ClassPath: spring/ApplicationContext.xml) (itensPappAppAppAppApT); @Testpublic void testDeleteByPrimaryKey () {Fail ("ainda não implementado");} // Insira @testpublic void testInsert () {itens = novo Items.Set.SetPrice (3999F); items.setDetail ("autentic"); items.setpic ("sdasd.jpg"); itens.SetCreatETime (new Date ()); itensMapper.Insert (itens);} ////15 Sellize the Assessing the the the theaty); {ItemSexample ItemSexample = new ItemSexample (); // Construa as condições de consulta através de critérios ItemSexample.Criteria Critérios = ItemSexample.CreateCriteria (); Critérios.AndNameEqualTO ("TV"); // pode retornar vários registros <itens> list = itenspapper.selectBySample (Itemsexemple (Itemsexemple (TV "); for (int i = 0; i <list.size (); i ++) {itens it = list.get (i); System.out.println (it.getId ()+":"+it.getName ());}} // consulta com base na chave primária @testpublic void testSelectByPrimaryKey () {itens itens = itensMapper.SelectByPrimaryKey (1); System.out.Println (itemNeTName (); testUpDateByPrimaryKey () {// Atualize todos os campos, você precisa consultar primeiro e depois atualizar itens itens = itensMapper.SelectByPrimaryKey (1); items.setName ("iPhone"); ItensMapper.UpDateByPrimaryKey (Itens); // Se o campo de entrada não estiver vazio, use esse método nas atualizações do lote. Não há necessidade de consultar primeiro e depois atualizar //itemsmapper.UpdateByPrimaryKeySelective(record);}}O exposto acima está o código automático de engenharia reversa Mybatis gerada pela estrutura Mybatis apresentada a você pelo editor. Espero que seja útil para todos!
Leituras recomendadas de wulin.com:
Mybatis Introdução Tutorial de Aprendizagem (i) - Mybatis Start Quick Start
Análise aprofundada dos campos do tipo Mybatis Oracle Blob Salvando e lendo
Mybatis pratica Dao e mapeador
SQL dinâmico e consulta associada na prática mybatis