mybatis代码生成+自定义注解+自定义注释实例

Mybatis代码生成器

Mybatis Generator是Mybatis提供的一个代码生成器,可以通过数据库中的表结构自动生成对应的Java、Mapper和XML文件。自动生成的代码基于Mybatis的最佳实践,可以大大减轻Java开发者的工作量,并且保证代码的规范性和正确性。

安装Mybatis Generator

Mybatis Generator是一个Java程序,可以通过Maven来进行安装。将以下内容加入到pom.xml文件中:

<build>
  <plugins>
    <plugin>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>1.4.0</version>
      <dependencies>
        <dependency>
          <groupId>mysql</groupId>   <!-- 数据库驱动,根据实际情况修改 -->
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.45</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

配置Mybatis Generator

Mybatis Generator生成代码的依据是generatorConfig.xml配置文件和数据库中的表结构。generatorConfig.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="context1">
    <jdbcConnection connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis"
      driverClass="com.mysql.jdbc.Driver" password="root"
      userId="root" />
    <javaModelGenerator targetPackage="com.tianma.mybatis.model"
      targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <sqlMapGenerator targetPackage="com.tianma.mybatis.mapper"
      targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.tianma.mybatis.mapper"
      targetProject="src/main/java">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    <table schema="mybatis" tableName="user">
      <property name="useActualColumnNames" value="false" />
      <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()"
        identity="true" />
      <columnOverride column="password" property="pwd" />
    </table>
  </context>
</generatorConfiguration>

使用Mybatis Generator生成代码

在配置文件和数据库结构准备好之后,可以使用Mybatis Generator生成代码。在Maven的控制台中输入以下命令即可:

mvn mybatis-generator:generate

使用自定义注解来生成代码

我们可以通过给表结构添加注解的方式,让Mybatis Generator能够根据注解来生成对应的代码。以下是一个示例:

@TableName("user")
public class User {
  private Long id;
  @TableField("username")
  private String name;
  @TableField("password")
  private String pwd;
  // ...
}

通过添加注解@TableField和@TableName可以让Mybatis Generator根据注解来自动生成对应的XML、Mapper以及Java对象的属性以及对应的getter/setter方法。

使用自定义注释来生成代码

我们还可以通过添加自定义注释的方式来生成代码。以下是一个示例:

/**
 * 用户表
 * 
 * CREATE TABLE `user` (
 *   `id` bigint(20) NOT NULL AUTO_INCREMENT,
 *   `username` varchar(255) NOT NULL COMMENT '用户名',
 *   `password` varchar(255) NOT NULL COMMENT '密码',
 *   PRIMARY KEY (`id`)
 * ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
 */
public class User {
  private Long id;
  private String name;
  private String pwd;
  // ...
}

通过在Java代码中添加注释,我们可以让Mybatis Generator在生成对应的XML、Mapper和Java对象的时候,使用我们给定的注释来生成对应的注释说明。这样可以让生成的代码更加清晰明了。

示例一

下载MySQL Connector/J

下载地址:https://dev.mysql.com/downloads/connector/j/

添加依赖

将以下依赖添加到pom.xml中:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
</dependency>

配置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="default">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
          connectionURL="jdbc:mysql://localhost:3306/mybatis"
          userId="root" password="root">
        </jdbcConnection>
        <javaModelGenerator targetPackage="com.mybatis.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="true"/>
        </sqlMapGenerator>
        <javaClientGenerator targetPackage="com.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table tableName="t_order" domainObjectName="Order"></table>
    </context>
</generatorConfiguration>

运行生成代码

运行 mvn mybatis-generator:generate,代码会自动生成到对应的包目录下。

示例二

以下是 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="default">
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="addRemarks" value="true" />
        </commentGenerator>

        <!-- 数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?useSSL=false" userId="root" password="root">
        </jdbcConnection>

        <!-- 代码生成器 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <javaModelGenerator targetPackage="com.test.mybatis.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="false"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="com.test.mybatis.mapper" type="XMLMAPPER" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 表生成器 -->
        <table tableName="t_user">
            <property name="useActualColumnNames" value="true" />
        </table>

    </context>

</generatorConfiguration>

其中,我们使用了commentGenerator来生成注释说明,jdbcConnection连接了本地环境下的test数据库,javaModelGenerator用于生成对应的Java对象,sqlMapGenerator用于生成对应的Mapper XML文件,而javaClientGenerator用于生成对应的Mapper接口。在table节点中,我们指定了生成对应的表结构,其中useActualColumnNames设置为true,表示使用表中的实际列名作为Java类的属性名,而不是按照Mybatis的默认规则进行命名。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis代码生成+自定义注解+自定义注释实例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 关于Java中的dozer对象转换问题

    关于Java中的Dozer对象转换问题,推荐以下完整攻略进行讲解: 什么是Dozer对象转换器? Dozer是一个JavaBean映射的转换工具,它可以将一个Java对象转换为另一个Java对象。Dozer提供简单的反射功能,自动识别不同类之间的相同名称的字段,并自动映射它们。Dozer支持类之间的复制、聚合关系、继承、XML配置映射等特性。 使用Dozer…

    Java 2023年5月26日
    00
  • 带你走进Maven的大门-最全Maven配置及集成idea工具总结

    带你走进Maven的大门-最全Maven配置及集成idea工具总结 什么是Maven Maven是用于Java项目的构建工具,可以帮助我们管理项目依赖、打包和发布等工作。通过引入Maven的概念,我们可以将项目开发中的依赖管理的工作与项目本身的开发工作分离出来,大大提高项目构建和依赖管理的效率。 Maven的配置 环境变量的配置 首先需要配置Maven的环境…

    Java 2023年5月20日
    00
  • springboot项目整合druid数据库连接池的实现

    下面是 Spring Boot 项目整合 Druid 数据库连接池的实现的完整攻略。 1. 引入 Druid 依赖 在Maven或Gradle项目中,需要在项目依赖中引入 Druid 数据库连接池的依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId&…

    Java 2023年6月16日
    00
  • Java 超基础讲解String的使用

    我将为您提供 Java 超基础讲解 String 的使用的完整攻略,具体如下: 一、什么是 String 在 Java 中,String 是一个类,它代表了一个字符串。 二、创建一个字符串变量 可以通过两种方式来创建一个字符串变量: 1. 直接赋值 String str1 = "Hello World"; 2. 使用构造方法 String…

    Java 2023年5月26日
    00
  • Java面试题冲刺第三天–集合框架篇

    让我来为您详细讲解“Java面试题冲刺第三天–集合框架篇”的完整攻略。 一、前言 集合框架是Java编程中的重要一环,作为Java工程师,在面试中对集合框架要有深刻的理解。本篇文章将为您提供Java集合框架面试题的完整攻略,帮助您在面试中脱颖而出。 二、集合框架概述 集合框架是Java中的一组接口、实现类和算法,用于存储和操作一组对象。在Java编程中,集…

    Java 2023年5月19日
    00
  • Java 日期格式加上指定月数(一个期限)得到一个新日期的实现代码

    首先,我们需要使用Java的日期时间API中的”LocalDate”类。这个类用于表示日期,我们可以使用它来进行日期间的加减操作。 接下来,我们可以使用”plusMonths”方法来添加指定月数。该方法会返回一个新的日期对象,表示在原日期对象基础上加上指定月数的日期。 以下是实现代码: import java.time.LocalDate; public c…

    Java 2023年5月20日
    00
  • MySQL 处理大数据表的 3 种方案,写的太好了,建议收藏!!

    作者:马佩 链接:https://juejin.cn/post/7146016771936354312 场景 当我们业务数据库表中的数据越来越多,如果你也和我遇到了以下类似场景,那让我们一起来解决这个问题 数据的插入,查询时长较长 后续业务需求的扩展 在表中新增字段 影响较大 表中的数据并不是所有的都为有效数据 需求只查询时间区间内的 评估表数据体量 我们可…

    Java 2023年4月17日
    00
  • javaGUI实现多人聊天功能

    下面是Java GUI实现多人聊天的完整攻略: 1. 确定实现方式 Java GUI实现多人聊天功能,可以采用Socket连接和Java Swing界面实现,也可以使用第三方库。这里我们介绍Socket连接和Java Swing界面实现的方式。 2. 创建Server端 首先,创建Server端代码,该部分主要用于监听客户端的连接请求,并进行相应的处理。其中…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部