MyBatis Plus para acesso a dados (3) - Gerador de código MPG

"A oferta chega, chame os amigos para pegar! Estou participando do Evento Check-in de Recrutamento da Primavera de 2022, clique para ver os detalhes do evento ."

Comparação do gerador de código One, MyBatis Plus e MyBatis

  • Um grande número de configurações personalizadas é fornecido no MPG, e o código gerado pode atender totalmente às necessidades de vários tipos
  • Seleção de estratégia para nome de tabela e nome de campo
    • Em MPG, nomes de tabelas de banco de dados e nomes de campos podem ser nomeados por hump ou por glide.A configuração dbColumnUnderline no MyBatis Plus é habilitada por padrão. O MPG recomenda usar a nomenclatura camel case, para que os campos não precisem ser mapeados e correspondam diretamente às classes de entidade e atributos de classe de entidade, o que pode evitar a perda de desempenho do mapeamento; usar a nomenclatura de sublinhado requer a abertura de regras de conversão de corcunda
  • O MPG pode gerar classe de entidade Entity, interface Mapper, arquivo de mapeamento Mapper, camada de serviço, camada de controlador
  • MBG pode gerar classes de entidade Entity, interfaces Mapper e arquivos de mapeamento Mapper

Para o gerador de código MBG de MyBatis, consulte MyBatis (7) de Data Access - MBG & PageHelper

2. Gerador de Código Plus MyBatis MPG

Construção de Engenharia

Use IDEA para criar um projeto Maven mybatis-plus-mpg, as dependências relacionadas usadas e os arquivos de configuração global Spring e MyBatis Plus e arquivos de log do banco de dados podem se referir a MyBatis Plus (1) - BaseMapper CRUD (Parte A) do Data Acces criado mybatis criado em -plus funciona.

Além das dependências mencionadas acima, as dependências do gerador de código MyBatis Plus e as dependências do mecanismo de modelo também são necessárias para executar o MPG. O MPG usa o modelo Velocity do Apache por padrão, e o mecanismo de modelo Freemarker é usado aqui.

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>
复制代码

Como o MPG irá gerar a camada Controller, ele precisa adicionar as dependências relevantes do Spring Web MVC

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring-version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring-version}</version>
</dependency>
复制代码

Código gerador de MPG

public class GeneratorApp {

    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true";
    private static final String JDBC_USERNAME = "root";
    private static final String JDBC_PASSWORD = "root";
    // 代码生成器
    @Test
    public void generator(){

        FastAutoGenerator.create(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD)
                .globalConfig(builder -> {
                    builder.author("Jingnan") // 设置作者
                            //.enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com") // 设置父包名
                            .moduleName("lilith") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "src/main/resources/mappers/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("t_tesla").addInclude("porsche") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();

    }
}
复制代码

O código no método do gerador é copiado do site oficial do MyBatis Plus, e apenas as informações de conexão do banco de dados e as informações do nome do pacote são modificadas.

execute o método gerador

imagem.pngDe acordo com a saída do log do console, pode-se ver que a geração do código foi concluída

Ver estrutura de diretórios

imagem.png

O MPG gera automaticamente a camada do controlador, a camada de serviço, a interface do mapeador e o arquivo XML do mapeador

Se você deseja gerar o código correspondente para várias tabelas ao mesmo tempo, pode adicionar diretamenteInclude("porsche")imagem.png

Para obter mais configurações, consulte o Gerador de código plus MyBatis

3. Teste o código gerado pelo MPG

Testar Tesla Mapper

Crie um novo TeslaMapperTest para testar a interface TeslaMapper

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application.xml")
public class TeslaMapperTest {

    @Resource
    private TeslaMapper teslaMapper;

    @Test
    public void insert(){
        Tesla tesla = new Tesla();
        tesla.setName("Model 3P 2022");
        tesla.setVehicleType("四门轿车");
        tesla.setPrice(270000.00);
        tesla.setFactory("特斯拉上海超级工厂");

        int count = teslaMapper.insert(tesla);
        System.out.println("执行INSERT操作后更新的行数:" + count);
    }

    @Test
    public void selectById(){
        Tesla tesla = teslaMapper.selectById(6);
        System.out.println("执行SELECT查询到的数据:" + tesla);
    }

    @Test
    public void update(){
        Tesla tesla = new Tesla();
        tesla.setId(1166057516);
        tesla.setFactory("特斯拉柏林超级工厂");

        int count = teslaMapper.updateById(tesla);
        System.out.println("执行UPDATE操作后更新的行数:" + count);
    }

    @Test
    public void delete(){
        int count = teslaMapper.deleteById(1166057516);
        System.out.println("执行DELTE操作后更新的行数:" + count);
    }
}
复制代码

Execute o método de inserçãoimagem.png

Execute o método selectByIdimagem.png

Execute o método udpdateimagem.png

Execute o método de exclusãoimagem.png

Teste ITeslaService

Crie uma nova classe de teste ITeslaServiceTest para ITeslaService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application.xml")
public class ITeslaServiceTest {

    @Resource
    private ITeslaService teslaService;

    @Test
    public void insert(){
        Tesla tesla = new Tesla();
        tesla.setName("Roadster 2022");
        tesla.setPrice(1200000.00);
        tesla.setVehicleType("跑车");
        tesla.setFactory("加州弗拉蒙特超级工厂");

        boolean save = teslaService.save(tesla);
        System.out.println("是否保存成功:" + save);
        System.out.println("保存成功的记录的ID为:" + tesla.getId());
    }

    @Test
    public void getById(){
        Tesla tesla = teslaService.getById(1166057517);
        System.out.println("根据ID获取的记录为:" + tesla);
    }

    @Test
    public void update(){
        Tesla tesla = new Tesla();
        tesla.setId(1166057517);
        tesla.setName("赛博皮卡 2022");

        boolean update = teslaService.update(tesla, null);
        System.out.println("是否更新成功:" + update);
    }

    @Test
    public void remove(){
        boolean remove = teslaService.removeById(1166057517);
        System.out.println("是否移除成功:" + remove);
    }


}
复制代码

Execute o método salvarimagem.png

Execute o método getByIdimagem.png

Execute o método de atualizaçãoimagem.png

Execute o método de remoçãoimagem.png

Acho que você gosta

Origin juejin.im/post/7080093649517674504
Recomendado
Clasificación