SpringBoot系列-- SpringBoot之Mybatis Generator生成器使用(多种方式)

1. 项目环境

  • IDEA 2020.1.4
  • Maven 3.6
  • JDK 1.8
  • SpringBoot 2.x
  • Mysql 5.7

项目文件在GitHub(欢迎star⭐):
https://github.com/Gang-bb/Gangbb-SpringBoot

如果您没有了解过Mybatis,推荐先看这个博客,对SpringBoot中使用Mybatis有一定认识

SpringBoot系列-- SpringBoot整合MyBatis

项目所使用到的sql文件放在github项目中(/src/main/resources目录下)

如有疑问或是建议,欢迎评论区留言或者QQ:949526365

2. 引入依赖

        <!--mybatis数据库相关-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency> 

image-20210126201453652

添加插件:

            <!--Mybatis生成器-->
            <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.22</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <verbose>true</verbose>
                    <!--是否覆盖原有文件-->
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>

3.生成基于.xml形式使用mybatis的各层文件

3.1 用generatorConfig.xml配置插件生成

3.1.1 编写generatorConfig.xml文件

在/src/main/resources目录下新建generatorConfig.xml文件

配置相关官方文档:http://mybatis.org/generator/configreference/xmlconfig.html

配置内容:

<?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>
  <!-- 配置文件,放在resource目录下即可 -->
  <!--数据库驱动个人配置-->
<!--  <classPathEntry-->
<!--    location="E:\\apache-maven-3.6.3\\repository\\mysql\\mysql-connector-java\\8.0.18"/>-->
  <context id="MysqlTables" targetRuntime="MyBatis3">
    <property name="autoDelimitKeywords" value="true"/>
    <!--可以使用``包括字段名,避免字段名与sql保留字冲突报错-->
    <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
    <property name="beginningDelimiter" value="`"/>
    <property name="endingDelimiter" value="`"/>
    <!-- optional,旨在创建class时,对注释进行控制 -->
    <commentGenerator>
      <!-- 是否去除自动生成日期的注释 true:是 : false:否 -->
      <property name="suppressDate" value="true"/>
      <!-- 是否去除所有自动生成的注释 true:是 : false:否 -->
      <property name="suppressAllComments" value="true"/>
    </commentGenerator>

    <!--数据库链接地址账号密码-->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
      connectionURL="jdbc:mysql://127.0.0.1:3306/myemployees?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"
      userId="root"
      password="root">
      <!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
      <!--如果您使用的是Connector / J的8.x版,您可能会注意到生成器尝试为MySql信息模式(sys,information_schema,performance_schema等)中的表生成代码。
      这可能不是您想要的!要禁用此行为,请将属性“nullCatalogMeansCurrent = true”添加到JDBC URL。-->
      <!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
      <property name="nullCatalogMeansCurrent" value="true"/>
    </jdbcConnection>

    <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
    <!--数据库BigDecimals字段在java中定义-->
    <javaTypeResolver>
      <property name="forceBigDecimals" value="false"/>
    </javaTypeResolver>

    <!--生成Model类存放位置-->
    <javaModelGenerator targetPackage="com.gangbb.gangbbspringbootmybatisgenerator.model.pojo"
      targetProject="src/main/java">
      <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
      <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
      <property name="enableSubPackages" value="true"/>
      <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
      <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
      <property name="trimStrings" value="true"/>
      <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法。 取而代之的是类似constructorBased的类 -->
      <property name="immutable" value="false"/>
    </javaModelGenerator>

    <!--生成mapper映射文件存放位置-->
    <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
      <property name="enableSubPackages" value="true"/>
    </sqlMapGenerator>
    
    <!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口 
        targetPackage/targetProject:同javaModelGenerator
        type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
            1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
            2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
            3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
        注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
    -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.gangbb.gangbbspringbootmybatisgenerator.model.dao"
      targetProject="src/main/java">
      <property name="enableSubPackages" value="true"/>
    </javaClientGenerator>

    <!--生成对应表及类名-->
    <table tableName="jobs" domainObjectName="Jobs"
      enableCountByExample="false"
      enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
      selectByExampleQueryId="false">
    </table>


  </context>
</generatorConfiguration>
3.1.2 关于generatorConfig.xml配置文件的补充说明

说明1:

在这里插入图片描述

开头会爆红是正常的。
如果是在看不惯。

在这里插入图片描述

在这里插入图片描述

即可!

说明2

配置文件最后的

标签属性详解

1,schema:数据库的schema;

2,catalog:数据库的catalog;

3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName

4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;

5,enableInsert(默认true):指定是否生成insert语句;

6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);

7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;

8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);

9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);

10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;

11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);

12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性)

13,modelType:参考context元素的defaultModelType,相当于覆盖;

14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)

15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性

注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写;

3.1.3 开始生成文件

在这里插入图片描述

image-20210126213737777

说明成功

生成的文件:

在这里插入图片描述

3.2 使用Idea插件生成

3.2.1 better-mybatis-generator插件简介

插件功能:在idea的database工具中使用,选择表,生成mybatis相关的代码。已支持的数据库:Mysql、Mysql8、Oracle、MariaDB。

插件官网地址:https://plugins.jetbrains.com/plugin/11021-better-mybatis-generator

github地址:https://github.com/kmaster/better-mybatis-generator

idea中插件市场搜不到的,可以本地安装插件,直接去插件官网下载很快,如何本地安装百度一搜就有!

安装地址:https://plugins.jetbrains.com/plugin/11021-better-mybatis-generator/versions

image-20210126221712230

3.2.2 better-mybatis-generator使用

1.配置:

image-20210126220959827

ps:每个文件放哪个文件看个人喜好和开发习惯,无标准硬性要求!

2.用idea连接到本地数据库:

在这里插入图片描述

填写数据库相关信息

在这里插入图片描述

3.选择要生成的表,右键

在这里插入图片描述

4.检查配置

右键后会弹出一个之前的配置页面。前面配置过了基本既没有什么问题。直接ok

在这里插入图片描述

5.成功

在这里插入图片描述

3.2.3 功能更强大的MyBatisCodeHelper-Pro(推荐使用)

image-20210126224142309

可以支持更多定制化的生成持久层代码和service层代码,而且这只是它的一个小功能!更多功能查看:

github:https://github.com/gejun123456/MyBatisCodeHelper-Pro

在这里插入图片描述

配置界面丰富多彩,跟better-mybatis-generator基本配置差不多。主要就是选择保存文件的文件夹!

在这里插入图片描述

3.3 编码实现Mybatis Generator配置

该方法相对比较麻烦。本文暂不对该实现方法详解!

4.生成基于注解使用Mybatis的各层文件

4.1 用generatorConfig.xml配置插件生成

对比3.1中的步骤。只需修改generatorConfig.xml文件中的此部分即可,其他操作相同

image-20210126230139752

生成结果:

在这里插入图片描述

5. 总结

  • 插件生成可以提升效率和幸福感!
  • 如果需要给生成的文件更多自定义注解和注释(例如:把数据库字段的注释生成到实体类对应的字段中)可以到官网文档了解!(3.1.1给出的网址)
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中使用Mybatis-Plus自动生成代码的步骤如下: 1. 首先,在pom.xml文件中添加Mybatis-Plus的依赖项。这包括mybatis-plus-generator、velocity-engine-core和lombok等依赖项。\[1\] 2. 创建一个Mapper接口,继承自BaseMapper,并指定实体类的泛型。在这个接口中,你可以定义自己的查询方法。\[3\] 3. 配置Mybatis-Plus的代码生成器。你可以使用代码生成器来生成Mapper、Model、Service和Controller层的代码。你可以使用代码或者Maven插件来快速生成代码。\[2\] 4. 运行代码生成器,生成所需的代码文件。 5. 在Spring Boot的配置文件中配置数据库连接信息和Mybatis-Plus的相关配置。 6. 在Service层中使用生成的Mapper接口进行数据库操作。 通过以上步骤,你可以在Spring Boot中使用Mybatis-Plus自动生成代码。这样可以大大减少手动编写重复的CRUD操作的工作量,并提高开发效率。 #### 引用[.reference_title] - *1* [SpringBoot中的自动代码生成 - 基于Mybatis-Plus](https://blog.csdn.net/Jalon2015/article/details/116026730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [springboot整合mybatis-plus,代码自动生成](https://blog.csdn.net/qq_32784303/article/details/82964168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值