当前位置:首页 > 问答 > 正文

用Maven搞定数据库表自动生成Java类文件,省时又方便的实操分享

(来源:CSDN博客《使用Maven插件自动生成Java实体类》) 记得刚入行那会儿,每次数据库表结构有变动,最头疼的就是手动去改对应的Java实体类,一个个字段去核对,驼峰命名转换,稍不留神就打错字母,或者漏了字段,调试起来特别浪费时间,后来项目组里的前辈推荐了用Maven插件来自动完成这个活儿,试了一下,真有种“解放双手”的感觉,这篇文章就想和大家分享一下我最常用的方法,没啥高深理论,就是一步步怎么配、怎么用,目标是让新手也能立刻上手。

(来源:MyBatis Generator 官方文档) 我主要用的工具是MyBatis Generator(简称MBG),它是一个专门为MyBatis框架设计的代码生成器,能根据数据库表结构自动生成实体类(POJO)、Mapper接口以及XML映射文件,我们这里聚焦在生成实体类这个核心功能上,它的好处是能和Maven无缝集成,只需要在项目的pom.xml文件里配置一下,运行一个简单的Maven命令,代码就“唰”地一下生成了,特别适合在表结构设计确定后,快速生成基础代码,避免重复劳动。

(来源:个人实践总结) 具体怎么做呢?你的电脑上得装好Maven并且配置好环境变量,这个网上教程很多,这里就不啰嗦了,我们从一个空的Maven项目开始说起。

第一步:在pom.xml里添加插件依赖

打开你项目根目录下的pom.xml文件,在<project>标签下的<build>部分的<plugins>里,添加MyBatis Generator插件,因为MBG需要连接数据库来获取表信息,所以还得把对应的数据库驱动依赖也加上,比如我用的是MySQL,下面是一个配置示例:

<dependencies>
    <!-- 其他依赖... -->
    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version> <!-- 版本号请根据你的数据库版本调整 -->
    </dependency>
</dependencies>
<build>
    <plugins>
        <!-- 其他插件... -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.2</version> <!-- 使用较新的稳定版本 -->
            <configuration>
                <!-- 配置文件的位置,稍后会创建这个文件 -->
                <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                <overwrite>true</overwrite> <!-- 覆盖已存在的文件 -->
            </configuration>
            <dependencies>
                <!-- 这里也再引入一次数据库驱动,确保插件能正确使用 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.33</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

第二步:创建核心配置文件generatorConfig.xml

这是最关键的一步,MBG的所有行为都由这个配置文件决定,在src/main/resources目录下(如果没有就创建一个),新建一个名为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>
    <!-- 1. 数据库连接配置 -->
    <context id="MySQLTables" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC"
                        userId="你的数据库用户名"
                        password="你的数据库密码">
        </jdbcConnection>
        <!-- 2. 指定生成的Java模型类(实体类)的存放位置和包名 -->
        <javaModelGenerator targetPackage="com.example.entity" 
                           targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 3. 指定要生成的表 -->
        <table tableName="你的表名" domainObjectName="你的实体类名"/>
        <!-- <table tableName="user_info" domainObjectName="User"/> -->
        <!-- 可以配置多个table,生成多个表的实体类 -->
    </context>
</generatorConfiguration>

(来源:个人实践中的注意事项) 这里有几个地方需要你根据实际情况修改:

  • connectionURL:把你的数据库地址、端口、数据库名填进去,注意后面跟的参数,比如useSSL=falseserverTimezone=UTC是为了避免一些常见的连接问题。
  • userIdpassword:填你的数据库用户名和密码。
  • targetPackage:这是生成出来的Java实体类所在的包名,比如com.example.entity,你按自己项目的包结构来定。
  • targetProject:一般就填src/main/java,表示生成到源代码目录。
  • tableName:填数据库里真实的表名。
  • domainObjectName:填你希望生成的Java类的类名,MBG会自动把下划线命名转为驼峰命名,比如表叫user_info,这里可以指定类名为User

第三步:运行Maven命令生成代码

配置都搞定之后,就可以生成代码了,打开命令行(CMD或终端),进入到你的Maven项目根目录(就是有pom.xml的那个目录),然后执行以下命令:

mvn mybatis-generator:generate

(来源:实际操作反馈) 如果一切顺利,你会看到控制台输出一堆日志,最后有BUILD SUCCESS,这时候,你去IDE里刷新一下项目,在src/main/java/com/example/entity(根据你配置的包名)目录下,就会发现一个崭新的Java类文件已经生成了!类名就是你配置的domainObjectName,里面的字段和数据库表里的列一一对应,数据类型也自动转换好了(比如数据库的varchar对应Java的Stringdatetime对应Date等),还自动生成了gettersetter方法。

(来源:常见问题排查经验) 万一运行失败了,别慌,最常见的问题是数据库连接不上,请仔细检查generatorConfig.xml里的数据库URL、用户名和密码是否正确,数据库服务是否启动,还有就是驱动版本不匹配,确保pom.xml里MySQL驱动的版本和你安装的MySQL版本兼容,查看控制台报错信息,一般都能找到线索。

(来源:进阶使用技巧) 等用熟练了,你还可以在generatorConfig.xml里进行更多个性化配置,不想给每个字段都生成注释?可以加属性<property name="suppressAllComments" value="true"/>,想生成Swagger注解?可以引入额外的插件依赖并在配置里开启,这些高级玩法可以等你基本功能用顺了再慢慢研究。

用Maven配合MyBatis Generator来生成实体类,第一次配置可能觉得有点繁琐,但一旦配好,后续就一劳永逸了,尤其是在表结构频繁调整的开发初期,或者需要从零开始创建大量实体类时,这个工具能节省大量的时间和精力,还能有效减少因手误导致的错误,希望这个简单的分享能帮你提高效率,把时间花在更重要的业务逻辑开发上。

用Maven搞定数据库表自动生成Java类文件,省时又方便的实操分享