Gradle 项目使用 MyBatis-Generator 自动生成代码:高效开发的利器

@[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笔记"~

【转载须知】:转载请注明原文出处及作者信息

相关推荐
风雨同舟的代码笔记4 小时前
DockerVS虚拟机:从架构师视角深度对比
后端
开始学java4 小时前
常用类
后端
放风筝的鸭脚木4 小时前
接口的幂等性
后端
干翻秋招4 小时前
Java知识点复习
后端·面试
Postkarte不想说话4 小时前
Cisco配置BGP
后端
小帅说java4 小时前
【Java开发】Java热门框架深入开发第11篇:学习目标,一、SpringBoot简介【附代码文档】
javascript·后端
CodeSheep5 小时前
JetBrains官宣,又一个IDE可以免费用了!
前端·后端·程序员
间彧5 小时前
SpringBoot和Servlet的联系
后端
间彧5 小时前
Spring Boot的DispatcherServlet是如何封装和扩展原生Servlet功能的?
后端