详解mybatis.generator配上最新的mysql 8.0.11的一些坑

下面我将详细讲解如何配合最新的MySQL 8.0.11使用MyBatis Generator,并解决可能会遇到的一些坑。具体步骤如下:

1. 准备工作

在开始之前,我们需要准备一些必要的工具和环境:

  1. MySQL 8.0.11及以上版本,这里以MySQL 8.0.26为例。
  2. JDK 8及以上版本。
  3. MyBatis Generator,这里以版本1.4.0为例。

2. 配置pom.xml

首先,在项目的pom.xml文件中添加如下依赖:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.26</version>
</dependency>
<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.4.0</version>
</dependency>

这样就将MySQL驱动和MyBatis Generator的依赖添加到了项目中。

3. 编写generatorConfig.xml

在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>
    <!-- 数据库驱动 -->
    <classPathEntry location="mysql-connector-java-8.0.26.jar" />
    <context id="mysql" targetRuntime="MyBatis3">
        <!-- 自动识别数据库关键字,默认false,如果设置为true,
        根据SqlReservedWords中定义的关键字列表;一般保留默认值,遇到数据库关键字(Java关键字一般不会),
        使用自定义类型名来解决 -->
        <property name="autoDelimitKeywords" value="true" />
        <!-- 数据库连接驱动配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useUnicode=
            true&amp;characterEncoding=utf-8"
            userId="root"
            password="123456"/>
        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
        NUMERIC 类型解析为java.math.BigDecimal -->
        <property name="forceBigDecimals" value="false" />
        <!-- 是否创建生成的Java模型对象的链式(setter)方法,返回值是当前对象 -->
        <property name="chainModelMethods" value="false" />
        <!-- 是否使用BigDecimal,通常不需要 -->
        <property name="useBigDecimal" value="false" />
        <!-- 实体类中日期类型采用哪种类型,默认情况下是java.util.Date,
        但是java.util.Date在序列化后显示的时间是不对的,
        解决方法是使用java.time.LocalDateTime -->
        <property name="useJSR310Types" value="true" />
        <!-- 生成的Java文件的编码 -->
        <property name="javaFileEncoding" value="utf-8" />
        <!-- 需要生成的表,%通配任意多个字符,如et_% -->
        <table tableName="student" />
    </context>
</generatorConfiguration>

此时我们需要注意的是:

  • 标签中的connectionURL需要根据自己的实际情况修改,其中serverTimezone指定时区,useUnicode和characterEncoding指定字符编码。
  • 标签中,可以根据需要修改自动识别数据库关键字、日期类型、模型方法等相关配置。

4. 运行MyBatis Generator

完成以上步骤后,就可以运行MyBatis Generator生成代码了。

在命令行中输入如下命令:

java -jar mybatis-generator-core-1.4.0.jar -configfile generatorConfig.xml -overwrite

其中-generator-core-1.4.0.jar是MyBatis Generator的jar包名称,-configfile指定generatorConfig.xml文件的路径,-overwrite表示如果已经生成过代码则覆盖。

此时,我们就成功地生成了与student表对应的Java代码。

示例一

假设我们有一个名为student的表,表结构如下:

CREATE TABLE `student` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL COMMENT '姓名',
  `age` int NOT NULL COMMENT '年龄',
  `gender` enum('男','女') DEFAULT '男' COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

使用上述配置和命令后,我们可以得到如下Java类:

public class Student {
    private Integer id;

    private String name;

    private Integer age;

    private String gender;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender == null ? null : gender.trim();
    }
}

示例二

如果我们的表结构中含有自增主键,我们需要在生成Java类时指定主键生成策略。我们可以在generatorConfig.xml文件中加入以下配置:

<generatorConfiguration>
    <context id="mysql" targetRuntime="MyBatis3">
        <!-- ... -->
        <table tableName="student">
            <generatedKey column="id" sqlStatement="JDBC" identity="true"/>
        </table>
    </context>
</generatorConfiguration>

这样,在生成Java类时就会自动为表的主键字段添加@GeneratedValue注解:

public class Student {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    // 其他字段同上
    // ...
}

这样就可以顺利地与MySQL 8.0.11配合使用MyBatis Generator了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解mybatis.generator配上最新的mysql 8.0.11的一些坑 - Python技术站

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

相关文章

  • java实现时钟表盘

    下面我将详细讲解Java实现时钟表盘的完整攻略。 环境准备 首先需要确保你的电脑上已经安装了JDK环境,并且配置了相应的环境变量。然后你需要找到适合的Java集成开发环境,例如Eclipse、IntelliJ IDEA等,这里我们以Eclipse为例。 构建项目 打开Eclipse,选择”New” -> “Java Project”。 输入项目名称,点…

    Java 2023年6月1日
    00
  • Spring Boot打包war jar 部署tomcat

    下面详细讲解一下“Spring Boot打包war/jar部署tomcat”的完整攻略。 1. 打包war包并部署到tomcat 第一步:创建Spring Boot项目 首先需要创建一个Spring Boot项目,可以使用IDEA、Eclipse等开发工具创建,也可以使用Spring Initializr在线生成项目模板。 第二步:添加依赖 在项目的pom.…

    Java 2023年5月19日
    00
  • 关于spring boot使用 jdbc+mysql 连接的问题

    请看下面的攻略: 1.引入相关依赖 在pom.xml文件中加入以下依赖: <dependencies> <!– Spring Boot JDBC 依赖 –> <dependency> <groupId>org.springframework.boot</groupId> <artifact…

    Java 2023年5月20日
    00
  • SpringBoot spring.factories加载时机分析

    在SpringBoot中,spring.factories文件是一种特定的配置文件,用于向Spring容器中加载自定义的配置类或者自动配置组件。 什么是SpringBoot spring.factories文件 spring.factories文件位于META-INF目录下,它是SpringBoot用来实现自动配置的一个重要组件。该文件被用于对Spring加…

    Java 2023年5月31日
    00
  • day01-项目介绍&功能实现

    项目介绍&功能实现 1.项目介绍&环境搭建 一个以社交平台为核心的轻电商项目,功能如下: 短信登录、商户查询缓存、优惠券秒杀、达人探店、好友关注、附近的商户、用户签到、UV统计 1.1项目架构 1.2项目环境搭建 1.2.1后端项目搭建 mysql的版本采用5.7及以上版本 (1)首先创建数据库,需要创建的表有: tb_user:用户表 tb…

    Java 2023年4月19日
    00
  • java基础中异常及包归纳整理

    Java基础中异常及包归纳整理 Java作为一门高级面向对象编程语言,具有强大的异常处理机制和模块化编程的“包”机制。以下是关于Java基础中异常及包的归纳整理。 异常(Exception) Java中把程序运行中发生的不正常情况称为“异常”。异常分为两大类:受查异常和非受查异常。受查异常是指在使用一个类或者方法时,必须对其进行异常处理(try-catch或…

    Java 2023年5月27日
    00
  • Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

    以下是Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)的完整攻略: 漏洞介绍 Apache ActiveMQ是一款开源的消息队列系统。当使用ActiveMQ的fileserver和http服务时,可以利用该漏洞将任意文件写入至任意路径,从而造成远程代码执行。 漏洞编号:CVE-2016-3088漏洞评级:高危 环境搭建 首先需要搭…

    Java 2023年6月15日
    00
  • Java 内置Http Server构建web应用案例详解

    我来详细讲解一下如何使用Java内置Http Server构建Web应用的攻略。 1. 前置知识 在学习Java内置Http Server构建Web应用之前,需要掌握以下技能: Java基础语法 Maven项目构建和管理 HTTP协议的基础知识 Servlet和JSP技术的基础知识 2. 环境搭建 为了使用Java内置Http Server构建Web应用,我…

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