详解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了。

阅读剩余 73%

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

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

相关文章

  • Java利用多线程模拟银行系统存钱问题

    Java利用多线程模拟银行系统存钱问题的完整攻略 1. 问题分析 假设有两个用户账户,分别在同一时间存钱,我们需要通过Java多线程模拟存钱的过程并确保数据的准确性和安全性。 2. 解决方案 为了确保数据的安全,Java使用了synchronized关键字来实现线程同步,同时也使用了wait()和notify()方法来解决线程的等待和调度问题。 Java中可…

    Java 2023年5月18日
    00
  • 详解slf4j+logback在java工程中的配置

    关于“详解slf4j+logback在java工程中的配置”,我将为你提供一个完整的攻略。包含以下内容: 简要介绍slf4j和logback 配置slf4j和logback logback使用示例 slf4j使用示例 希望以下内容能够帮助你理解和使用slf4j和logback。 简要介绍slf4j和logback slf4j(Simple Logging F…

    Java 2023年5月20日
    00
  • MyBatis动态SQL标签的用法详解

    MyBatis动态SQL标签的用法详解 MyBatis支持使用动态SQL标签,通过在XML中使用不同的标签和表达式可以很灵活地生成不同的SQL语句。在本文中,将详细讲解MyBatis动态SQL标签的使用方法。 if标签 if标签用于判断某个条件是否成立,如果成立则生成指定的SQL语句。示例: <select id="getUserList&q…

    Java 2023年5月20日
    00
  • mybatis自动生成@Table、@Column、@Id注解的方法

    完整攻略如下: 环境搭建 在项目中引入 MyBatis Generator 库,官方文档地址:http://www.mybatis.org/generator/index.html 编写配置文件 在项目中编写 MyBatis Generator 配置文件,文件中需要配置数据源及生成代码的相关实体类信息,示例配置文件如下: <?xml version=&…

    Java 2023年5月20日
    00
  • 最详细的文件上传下载实例详解(推荐)

    首先,我们需要明确一下本文的目的,它是为了向初学者介绍文件上传和下载的基本概念和实现方式,帮助他们更好地掌握这些技能。本文将结合两个示例,详细讲述文件上传和下载的实现过程。 文件上传 1. 准备工作 在进行文件上传之前,我们需要在后端准备好对应的接口,接口负责接收前端传过来的文件并保存至后端服务器中。 2. 前端实现 在前端页面,我们需要使用<inpu…

    Java 2023年5月19日
    00
  • Spring MVC整合 freemarker及使用方法

    Spring MVC是一款非常流行的MVC框架,而Freemarker是一款优秀的模板引擎,两者的整合可以使得我们在Web开发中处理模板更加高效、简便。以下是Spring MVC整合Freemarker的攻略及使用方法。 引入依赖 在pom文件中引入freemarker和spring-webmvc依赖: <dependency> <grou…

    Java 2023年5月20日
    00
  • Javascript字符串常用方法详解

    这里是“Javascript字符串常用方法详解”的完整攻略。 1. 概述 在JavaScript中,字符串是一种基本的数据类型。字符串常常用于文本处理、表单验证、数据格式化等场景。JavaScript提供了许多字符串操作方法,可以让我们快速、灵活地处理字符串。 2. 常用方法 2.1 字符串的length属性 字符串的length属性可以获取字符串的长度,即…

    Java 2023年5月27日
    00
  • SpringMVC详解如何映射请求数据

    下面我将详细讲解SpringMVC如何映射请求数据的完整攻略。 什么是SpringMVC SpringMVC是一种基于Java的Web框架,它可以帮助我们实现Web应用程序的开发。它是Spring Framework的一部分,专门用于处理Web请求和响应。SpringMVC基于模型-视图-控制器(MVC)架构模式,将应用程序分为模型、视图和控制器三个组件。 …

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