MyBatis-Plus——逆向工程之AutoGenerator代码生成器

Posted 张起灵-小哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus——逆向工程之AutoGenerator代码生成器相关的知识,希望对你有一定的参考价值。

1.案例详解

首先在Navicat中创建一张表。

创建一个SpringBoot项目,在pom文件中添加相关依赖。

大部分依赖我们都是见过的,因为这里需要使用MP框架中的逆向工程生成代码,所以还需要一个模板引擎依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>5.1.9</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>

        <!-- 模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

在核心配置文件中添加数据库连接的相关信息。

#配置数据库的相关连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=12345678

#配置对应的日志信息
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

编写代码生成的核心类。

package com.szh.mybatisplus;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 *
 */
public class AutoMapper {

    public static void main(String[] args) {
        //创建代码生成器
        AutoGenerator ag=new AutoGenerator();

        //设置全局配置
        GlobalConfig gc=new GlobalConfig();
        //设置代码的生成位置(磁盘目录)
        String path=System.getProperty("user.dir");
        gc.setOutputDir(path + "/02-end/src/main/java");
        //设置生成的作者
        gc.setAuthor("张起灵-小哥");
        //设置生成的类名
        gc.setMapperName("%sMapper");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setControllerName("%sController");
        //设置主键id的配置
        gc.setIdType(IdType.AUTO);
        //将全局配置信息提交给代码生成器
        ag.setGlobalConfig(gc);

        //设置数据源DataSource
        DataSourceConfig ds=new DataSourceConfig();
        ds.setDriverName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8");
        ds.setUsername("root");
        ds.setPassword("12345678");
        //将数据源信息提交给代码生成器
        ag.setDataSource(ds);

        //设置Package包
        PackageConfig pc=new PackageConfig();
        //设置生成的父级包、当前包
        pc.setModuleName("exam");
        pc.setParent("com.szh.mybatisplus");
        //将包信息提交给代码生成器
        ag.setPackageInfo(pc);

        //设置策略信息
        StrategyConfig sc=new StrategyConfig();
        //设置数据库表的命名规则:支持驼峰命名法
        sc.setNaming(NamingStrategy.underline_to_camel);
        //设置数据库表中字段的命名规则,支持驼峰命名法
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        //将策略信息提交给代码生成器
        ag.setStrategy(sc);

        //执行代码的生成
        ag.execute();
    }
}

运行上面这个核心主类。即可自动生成如下代码:👇👇👇

这里之所以生成了两个实体类,是因为我连接的数据库是springdb,在这个数据库中有两张表。

在编写测试代码之前,要记着在SpringBoot项目的启动入口类上,添加@MapperScan注解。

package com.szh.mybatisplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.szh.mybatisplus.exam")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

编写几个测试方法,测试一下我们生成的代码是否可以正常运行。(首先将需要用到的mapper接口注入到Spring容器中)

@Resource
private StudentMapper studentMapper;
    @Test
    void testInsertStudent() {
        Student student = new Student();
        student.setName("张起灵");
        student.setAge(18);
        student.setEmail("zql@sina.com");
        student.setStatus(1);

        int rows=studentMapper.insert(student);
        System.out.println("insert的结果:" + rows);
    }

    @Test
    void testSelectStudentById() {
        Student student=studentMapper.selectById(7);
        System.out.println("select的结果:" + student);
    }

    @Test
    void testSelectStudent() {
        QueryWrapper<Student> qw=new QueryWrapper<>();
        qw.lt("age",25);
        qw.isNotNull("email");

        List<Student> studentList=studentMapper.selectList(qw);
        for (Student stu : studentList) {
            System.out.println("select的结果:" + stu);
        }
    }

以上是关于MyBatis-Plus——逆向工程之AutoGenerator代码生成器的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot(十一):MyBatis插件之MyBatis-Plus

springboot整合mybatis-plus逆向工程

MyBatis-Plus逆向生成代码

MyBatis-Plus逆向生成代码

Mybatis-plus逆向工程使用方法

MyBatis-Plus01_概述初始化工程BaseMapper和Service中的CRUD常用注解