素材巴巴 > 程序开发 >

MyBatis积累(1):MyBatis Generator 超详细配置

程序开发 2023-09-03 15:24:24

目录

1、MyBatis Generator

2、MyBatis Generator 插件

2.1、 pom 中引入 MyBatis Generator 插件

2.2、配置 MyBatis Generator 插件

2.2.1、配置 MyBatis Generator config 文件路径

2.2.2、允许覆盖生成的文件

2.2.3、添加数据库驱动依赖

2.2.4、添加其他依赖

2.2.5、mybatis-generator-core 依赖

2.3、配置 MyBatis Generator Config

2.3.1、mybatis-generator-config详情

2.3.2、引入外部配置文件

2.3.3、配置context

2.3.4、context的子元素

plugin

commentGenerator

jdbcConnection

javaTypeResolver

javaModelGenerator

sqlMapGenerator

table

2.4、使用 MyBatis Generator


1、MyBatis Generator

    MyBatis Generator 是 MyBatis 提供的一个代码生成工具。可以帮我们生成 表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql的xml(mapper)。

     MyBatis Generator 是一个独立工具,可以下载jar包来运行,也可以在 Ant 和 maven 运行。

2、MyBatis Generator 插件

2.1、 pom 中引入 MyBatis Generator 插件

在 pom 的根节点下添加以下配置

org.mybatis.generatormybatis-generator-maven-plugin1.3.7    
 
 

2.2、配置 MyBatis Generator 插件

光引入 MyBatis Generator 插件还不行,还得配置 MyBatis Generator插件

2.2.1、配置 MyBatis Generator config 文件路径

MyBatis Generator 插件需要根据一个 MyBatis Generator config 文件,来具体运行

配置如下,版本是 1.3.7

org.mybatis.generatormybatis-generator-maven-plugin1.3.7src/main/resources/mybatis-generator-config.xml    
 
 

注意,这个路径是你的配置文件相对于该 pom 文件的路径

2.2.2、允许覆盖生成的文件

有时候我们的数据库表添加了新字段,需要重新生成对应的文件。常规做法是手动删除旧文件,然后在用 MyBatis Generator 生成新文件。当然你也可以选择让 MyBatis Generator 覆盖旧文件,省下手动删除的步骤。

org.mybatis.generatormybatis-generator-maven-plugin1.3.7src/main/resources/mybatis-generator-config.xmltrue    
 
 

值得注意的是,MyBatis Generator 只会覆盖旧的 po、dao、而 *mapper.xml 不会覆盖,而是追加,这样做的目的是防止用户自己写的 sql 语句一不小心都被 MyBatis Generator 给覆盖了

2.2.3、添加数据库驱动依赖

MyBatis Generator 需要链接数据库,肯定是需要对应数据库驱动的依赖的。

如下,给 MyBatis Generator 添加数据库驱动依赖

org.mybatis.generatormybatis-generator-maven-plugin1.3.7src/main/resources/mybatis-generator-config.xmltruemysqlmysql-connector-java8.0.17    
 
 

我用的数据库是 mysql ,其他数据库同理。注意数据库驱动的版本号,不同的版本对应的 MyBatis Generator 配置有些许不同,之后会讲。

大部分情况下,我们的项目中已经配置过了对应数据库的JDBC驱动,如下

现在在插件中又配置一次,感觉有些冗余,maven 提供了 includeCompileDependencies 属性,让我们在插件中引用 dependencies 的依赖,这样就不需要重复配置了。

配置如下

org.mybatis.generatormybatis-generator-maven-plugin1.3.7src/main/resources/mybatis-generator-config.xmltruetrue    
 
 

2.2.4、添加其他依赖

一般配置了 includeCompileDependencies 后就不需要配置其他依赖了,因为 includeCompileDependencies 会将当前 pom 的 dependencies 中所以 Compile 期的依赖全部添加到生成器的类路径中。

但有的人不想配置 includeCompileDependencies ,或者想在MyBatis Generator插件中使用另一个版本的依赖,就可以配置 dependencies

2.2.5、mybatis-generator-core 依赖

网上大部分文章都会配置 mybatis-generator-core 这个依赖,但是 MyBatis Generator 官网的案例中都没有提到说要配置这个依赖,我没有配置,并且可以正常使用 MyBatis Generator

2.3、配置 MyBatis Generator Config

2.3.1、mybatis-generator-config详情

MyBatis Generator 插件启动后,会根据你在 pom 中配置都路径找到该配置文件。

这个配置文件才是详细都配置 MyBatis Generator 生成代码的各种细节。

其中最重要的就是 context ,你的配置文件至少得包含一个context


 
 
 
 
 
 
 

2.3.2、引入外部配置文件

MyBatis Generator config 是可以引入外部配置文件的,如下,路径为相对于当前配置文件的路径

2.3.3、配置context

注意是配置在  下


 

targetRuntime = MyBatis3,生成的 dao 和 mapper.xml 如下

targetRuntime = MyBatis3Simple,生成的 dao 和 mapper.xml 如下,接口会少很多,只包含最最常用的

2.3.4、context的子元素

context的子元素必须按照以下给出的个数、顺序配置

  1. property (0..N)
  2. plugin (0..N)
  3. commentGenerator (0 or 1)
  4. jdbcConnection (需要connectionFactory 或 jdbcConnection)
  5. javaTypeResolver (0 or 1)
  6. javaModelGenerator (至少1个)
  7. sqlMapGenerator (0 or 1)
  8. javaClientGenerator (0 or 1)
  9. table (1..N)

plugin

配置一个插件,例如


 复制代码

这个插件给生成的Java模型对象增加了equals和hashCode方法

commentGenerator

commentGenerator 用来配置生成的注释。默认是生成注释的,并且会生成时间戳,如下

如果你想要保留注释和时间戳,可以不配置 commentGenerator。

如果你不想保留时间戳,需要如下配置


 
 复制代码

默认生成的注释是不会有 db 表中字段的注释,如果你想知道每个字段在数据库中的含义(前提是数据库中对应表的字段你添加了注释),可以如下配置


 

但说实话,MyBatis Generator 生成注释无用信息太多了,所以我一般都选择不生成注释


 

jdbcConnection

MyBatis Generator 需要链接数据库,所以需要配置 jdbcConnection,具体如下


 

${}里面是外部配置文件中的"name"

也可以写死,那就不需要配置

文章 MyBatis Generator踩坑与自救

javaTypeResolver

javaTypeResolver 是配置 JDBC 与 java 的类型转换规则,或者你也可以不用配置,使用它默认的转换规则。

就算配置也只能配置 bigDecimal 类型和时间类型的转换


 

javaModelGenerator

配置 po 生成的包路径和项目路径,如下


 

生成出来的 set 方法如下

时,可能会在 po 目录下在创建一个 “数据库名” 的文件夹,生成的 po 会放在该文件夹下,也就是说会多一层目录,用的上的可以配置

sqlMapGenerator

配置 Mapper.xml 文件的生成目录


 

javaClientGenerator

配置 XxxMapper.java 文件的生成目录


 

type="XMLMAPPER" 会将接口的实现放在 mapper.xml中,也推荐这样配置。也可以设置 type 为其他值,比如 type="ANNOTATEDMAPPER",接口的实现通过注解写在接口上面,如图

如果采用这种方式,不会生成 mapper.xml 也不用配置 ,但是采用注解来实现接口应对简单查询还好,如果是复杂查询并不如xml方便,所以还是建议将type配置成XMLMAPPER

table

一个 table 对应一张表,如果想同时生成多张表,需要配置多个 table


 
复制代码

其中 domainObjectName 不配置时,它会按照帕斯卡命名法将表名转换成类名

enableXXXByExample 默认为true,但只有在targetRuntime="MyBatis3"时才生效

生效时,会在po下多生成一个 XxxExample.java 的文件,如下

一个简单的user的Example帮助类有470行,我一般不会去用,如上全设置为false

targetRuntime="MyBatis3Simple"时,enableXXXByExample 不管为true、还是false 都不生效。

2.4、使用 MyBatis Generator

 配置好后,双击 maven 中的 MyBatis Generator 运行

参考:MyBatis Generator 超详细配置 - 掘金

Mybatis代码生成器Mybatis-Generator使用详解 - throwable - 博客园


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。