【学习笔记】mybatis-generator自动生成工具的使用教程 2021最新版

一、 什么是mybatis-generator

mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成DAO、POJO和xml等文件。

二、 如何在IDEA上使用mybatis-generator

1、导入依赖 (切记要导入到相应正确的位置)

		 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
            <scope>runtime</scope>
        </dependency>

  <!--引入generator插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.25</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!--允许移动生成的文件-->
                    <verbose>true</verbose>
                    <!--允许自动覆盖文件,第一次可覆盖,以后都不可覆盖-->
                    <overwrite>true</overwrite>
                    <!-- 自定义配置文件的名称  默认是generatorConfig.xml -->
                    <configurationFile>
                        src/main/resources/mybatis-generator.xml
                    </configurationFile>
                </configuration>
            </plugin>

2、 配置application.yml文件

#默认端口号
server:
  port: 8080

#配置数据源 这里的数据库为 test
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root

3、在resources目录下创建 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">
         <!-- 如果是粘贴复制的话,有可能上面这行会报红,按住Ctrl+Enter 导入即可  -->
<generatorConfiguration>

    <!-- context 是逆向工程的主要配置信息 -->
    <!-- id: 名字而已  作为唯一标识 -->
    <!-- targetRuntime: 设置生成的文件使用于哪个 MyBatis 版本  -->
    <context id="default" targetRuntime="MyBatis3">
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <!--生成pojo存放位置-->
        <!-- targetPackage: 生成实体类所在的包 -->
        <!-- targetProject: 生成实体类所在的硬盘位置 -->
        <javaModelGenerator targetPackage="com.movie.pojo" targetProject="src/main/java">

            <!-- 是否允许子包 -->
            <property name="enableSubPackages" value="true" />
            <!-- 是否对modal添加构造函数 -->
            <property name="constructorBased" value="true" />
            <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
            <property name="trimStrings" value="true" />
            <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 -->
            <property name="immutable" value="false" />

        </javaModelGenerator>

        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mapping.mybatis" targetProject="src/main/resources">
            <!-- 针对数据库的一个配置,是否把 schema 作为包名 -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--生成Dao类存放位置  也就是生成接口所在的位置 -->
        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
        -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.movie.dao" targetProject="src/main/java">
            <!-- 针对 Oracle 数据库的一个配置,是否把 schema 作为包名 -->
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--生成对应表及类名,这里每一个表的五项属性是为了删除自动编写的复杂查询-->
        <!-- tableName: 对应的是数据库表名,domainObjectName: 是实体类的名字,可以自定义-->
        <table tableName="user" domainObjectName="User" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false"></table>

        <table tableName="t1_user" domainObjectName="t1User" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false"></table>

        <table tableName="sys_user" domainObjectName="sysUser" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false"></table>

    </context>
</generatorConfiguration>

值得注意的是

表名一定要对照数据库的表名,否则就会无法找到,也就无法生成对应的表,我们来看一下对应的数据库表(我是用的是Navicat工具),如下:
在这里插入图片描述

数据库中的表我没有一对一进行配置完,所以只会生成配置过的表

3、点击运行
在这里插入图片描述
不出意外的话就出现下面的 画面:
在这里插入图片描述
大功告成。您将会在项目的目录栏里看到dao和pojo以及mapper.xml文件,这样会省了很多自己写的代码,就像下面这样,是不是很方便呢?
在这里插入图片描述

下面是可能出错的地方和解决方案

1、找不到generatorConfig.xml

Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate (default-cli) 
on project movie: configfile D:\java\html\src\main\resources\generatorConfig.xml does not exist

是因为系统默认的文件名是generatorConfig.xml 而我们大多是情况是自定义的配置文件,解决如下:
在这里插入图片描述
第二种方法就是在pom文件中自定义文件名,如下所示:
在这里插入图片描述
2、 错误:获取 JDBC Driver 异常

Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate (default-cli) on project movie: Execution default-cli of goal 
org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate failed: Exception getting JDBC Driver

解决:
方案1、检查 mybatis-generator.xml 文件 是否写错(留有空格也不行哦!)
在这里插入图片描述
方案2、检查pom文件有没有导入依赖
在这里插入图片描述

可能有人会问了,这个 mysql-connector-java 导入了两次是不是重了?
答:并没有,最上面是用于整个项目的依赖,在插件里面的 mysql-connector-java 是用于mybatis.generator 连接的,不冲突。

以上是本次学习的一点点经验积累,由于作者才疏学浅,有错的地方还请您指点江山,欢迎您在评论区留下宝贵的意见!

赠人玫瑰

手有余香

心有境界行则正

腹有诗书气自华

  • 14
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值