@[toc]
《Gradle 项目使用 MyBatis-Generator 自动生成代码:高效开发的利器》
在当今快速发展的软件开发领域,效率是项目成功的关键因素之一。对于基于 Gradle 的项目,结合 MyBatis-Generator 自动生成持久层代码,无疑是提升开发效率的有力手段。本文将深入探讨如何在 Gradle 项目中巧妙运用 MyBatis-Generator,实现代码的自动化生成,让你的开发工作事半功倍。
一、前言:自动化代码生成的意义
MyBatis-Generator 是一款功能强大的工具,能够为 MyBatis 生成 model、mapper、dao 等持久层代码。尽管它没有直接提供 Gradle 插件,但我们可以通过 Gradle 调用 Ant 任务,间接启动 MyBatis-Generator。这种方式不仅节省了手动编写代码的时间,还减少了人为错误,使开发人员能够将更多精力投入到业务逻辑的实现上。
二、环境搭建:开启高效开发之旅
在开始之前,确保你的开发环境满足以下要求:
- JDK 1.8:作为 Java 开发的基础,JDK 1.8 为项目提供了稳定的运行环境。
- IntelliJ IDEA 2017.2.2:这款集成开发环境为代码编写、调试和项目管理提供了强大的支持。
- Gradle 3.5.0:作为项目的构建工具,Gradle 负责项目的依赖管理和构建过程。
- MySQL:作为示例中的数据库,MySQL 存储了项目所需的数据。
三、配置详解:让代码生成变得简单
以 shopmall-order 订单服务为例,我们通过配置 shopmall-order.gradle 和 generator.xml 两个文件,实现 entity、mapper、xml 等代码的自动生成。
shopmall-order.gradle:Gradle 项目的核心配置
groovy
description = '''shopmall-order'''
dependencies {
compile project(":shopmall-order-api")
compile project(':shopmall-account-api')
}
// MyBatis-Generator 配置
mybatisGenerator {
verbose = true
configFile = 'src/main/resources/generator.xml'
}
在这里,我们指定了 MyBatis-Generator 的配置文件路径,并启用了详细输出模式,以便在生成代码时能够实时查看进度和潜在问题。
generator.xml:MyBatis-Generator 的灵魂所在
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="mybatis" targetRuntime="MyBatis3">
<!-- 自动实现 Serializable 接口 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<!-- 去除自动生成的注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库基本信息 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.223.25.82:3306/shopmall"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="true"/>
<property name="useJSR310Types" value="true"/>
</javaTypeResolver>
<!-- 生成实体类的位置以及包的名字 -->
<javaModelGenerator targetPackage="com.ireeder.order.domain.entity"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件存放位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 生成 Dao 类存放位置,mapper 接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.shopmall.order.domain.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<table schema="shopmall" tableName="coupon_item"
domainObjectName="CouponItemEntity" enableCountByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByPrimaryKeyQueryId="true"
enableUpdateByExample="false">
<columnOverride column="updated_at" javaType="java.time.LocalDateTime"/>
<columnOverride column="created_at" javaType="java.time.LocalDateTime"/>
<columnOverride column="validity" javaType="java.lang.Boolean"/>
</table>
</context>
</generatorConfiguration>
这段配置文件详细定义了代码生成的各个方面:
- 自动实现 Serializable 接口:确保生成的实体类具备序列化能力,方便在分布式系统中传输。
- 去除自动生成的注释:避免不必要的注释干扰代码阅读,保持代码的简洁性。
- 数据库连接信息:指定数据库驱动、连接 URL、用户名和密码,建立与数据库的连接。
- 类型解析器配置:强制使用 BigDecimal 和 JSR310 类型,确保数据类型的准确性和一致性。
- 实体类生成位置:定义实体类的包名和项目路径,同时启用子包生成和字符串修剪功能。
- 映射文件生成位置:指定映射文件的包名和项目路径,禁用子包生成。
- Dao 类生成位置:确定 mapper 接口的包名和项目路径,同样禁用子包生成。
- 表配置:针对特定表(如 coupon_item),自定义生成的实体类名和字段类型,灵活满足项目需求。
四、执行任务:见证代码自动生成的奇迹
在 Gradle 项目中,你可以通过以下命令启动 MyBatis-Generator 任务,生成相应的代码:
bash
gradle mybatisGenerator
执行该命令后,MyBatis-Generator 将根据 generator.xml 中的配置,连接数据库并生成 entity、mapper、xml 等文件。你可以在指定的项目路径下查看生成的代码,确保其符合预期。
五、总结与展望:提升开发效率的关键一步
通过在 Gradle 项目中使用 MyBatis-Generator,我们能够显著提升开发效率,减少重复性工作,降低人为错误。这种自动化代码生成的方式,不仅加快了项目的开发进度,还为团队协作提供了便利。在未来,随着技术的不断发展,我们可以预见,类似的自动化工具将在软件开发领域发挥越来越重要的作用,助力开发者们迈向更高的效率巅峰。
希望这篇文章能够帮助你在 Gradle 项目中成功应用 MyBatis-Generator,让你的开发工作更加轻松愉快。
更多技术干货欢迎关注微信公众号"风雨同舟的AI笔记"~
【转载须知】:转载请注明原文出处及作者信息