不要再手写实体类和Mapper了,使用MyBatis代码生成工具一键生成!

MyBatis代码生成工具

在我们使用MyBatis的过程中,我们往往需要编写实体类和单表CRUD代码,在表不多的时候,可能还好,但是一但表多了,那将会是一件相当麻烦的事情。幸运的是,MyBatis官方代码生成器(MyBatis Generator)可以帮助我们解决这个问题,MyBatis Generator(简称MBG)可以通过数据库表直接生成实体类、单表CRUD代码、mapper.xml文件。下面我们就来看一下如何使用MyBatis Generator。


使用MyBatis Generator

1、添加依赖

使用MBG,主要是以下两个依赖,一个是mybatis的spring boot依赖和MyBatis Generator的依赖。如果你只是单纯想用 MyBatis代码生成器,那么甚至可以不用mybatis-spring-boot-starter依赖

    <!--SpringBoot整合MyBatis-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.0</version>
    </dependency>

    <!-- MyBatis 生成器 -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.4.0</version>
    </dependency>

    <!--Mysql数据库驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

2、添加了依赖,我们就需要进行相关的配置

在application.yml中对数据源和MyBatis的mapper.xml文件路径进行配置

#数据库连接
spring.datasource.url=jdbc:mysql://192.168.91.128:3306/mytest?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#指定本地mapper.xml文件的存放位置
mybatis.mapper-locations=classpath:dao/*.xml

3、在启动类添加@MapperScan注解,指定扫描的路径

路径只要是包含你Mapper接口的路径都可以,范围越小,效率越高

@MapperScan("com.example.demo2")
public class Demo2Application {
    
    

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

}

4、上面就配置好了mybatis,然后我们就可以在resources目录下编写代码生成器的xml配置文件

下面是我编写的一个代码生成器xml文件

名称为:generatorConfig.xml

内容如下

<?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>
    <!--
        context:代码生成规则配置的上下文
            id:标识
            targetRuntime: MyBatis3Simple 只会生成基本的CRUD操作

    -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">

        <!--commentGenerator:注释生成策略-->
        <commentGenerator>
            <!--suppressAllComments:是否阻止注释生成-->
            <property name="suppressAllComments" value="true"/>
            <!--suppressDate:是否阻止时间戳生成-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!--jdbcConnection:数据库的链接属性-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mytest?useUnicode=true&amp;characterEncoding=utf8"
                        userId="root"
                        password="root">
            <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

        <!--javaTypeResolver:java类型转换策略-->
        <javaTypeResolver >
            <!-- forceBigDecimals
                 false:如果数据库中的字段类型为numeric或者decimal,在代码生成的时候根据数据库中设定的长度自动选择java类型进行转换
                 true:直接使用java.math.BigDecimal类型-->
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--domain生成策略;targetPackage:生成到哪个包下面,targetProject:生成到哪个项目目录下面-->
        <javaModelGenerator targetPackage="com.example.childdemo.model" targetProject="src/main/java">
            <!--<property name="enableSubPackages" value="true" />-->
            <!--表示是否修剪字符串(去掉空格-->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--sqlMapGenerator:映射文件生成策略
               targetPackage:生成到哪个包下面,targetProject:生成到哪个项目目录下面
        -->
        <sqlMapGenerator targetPackage="com.example.childdemo.mapper"  targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!--mapper接口生成策略
           type:ANNOTATEDMAPPER:注解的形式
                XMLMAPPER:xml映射的形式-->
        <javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.childdemo.mapper"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!--指定要生成代码的表
                domainObjectName:设置表对应的domain实体类生成的名称
        -->
        <table tableName="productdir" domainObjectName="ProductDir"></table>

    </context>
</generatorConfiguration>`

5、运行代码生成器
下面我们通过编码和配置文件运行代码生成器

编写好配置文件之后,我们就可以写个类用于生成代码,直接运行main方法即可生成所有代码,代码如下:

public class Generator {
    
    
    public static void main(String[] args) throws Exception {
    
    
        //MBG 执行过程中的警告信息
        List<String> warnings = new ArrayList<String>();
        //当生成的代码重复时,覆盖原代码
        boolean overwrite = true;
        //读取我们的 MBG 配置文件
        InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        //创建 MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        //执行生成代码
        myBatisGenerator.generate(null);
        //输出警告信息
        for (String warning : warnings) {
    
    
            System.out.println(warning);
        }
    }

}

运行main方法,就会帮我们生成相应的实体类和mapper接口了


Maven插件运行代码生成器

除了上面的方法,我们还可以通过Maven插件运行代码生成器

如果使用Maven插件,那么不需要引入mybatis-generator-core依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin即可,在pom文件添加以下plugin:

             <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!-- 输出详细信息 -->
                    <verbose>true</verbose>
                    <!-- 覆盖生成文件 -->
                    <overwrite>true</overwrite>
                    <!-- 定义配置文件 -->
                    <configurationFile>${
    
    basedir}/src/main/resources/generator-configuration.xml</configurationFile>
                </configuration>
                <executions>
                    <execution>
                        <id>MyBatis Generate</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>

                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.38</version>
                    </dependency>
                </dependencies>
            </plugin>

插件配置完毕之后,使用下面的命令即可运行:

mvn mybatis-generator:generate

注意:插件的版本要与连接数据库的版本对应,否则会报错

我们也可以在编译器的maven选项直接运行,如下

在这里插入图片描述

运行后就可以得到相应的代码了,如下

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36551991/article/details/112440346