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

目录

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.generator
            mybatis-generator-maven-plugin
            1.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.generator
            mybatis-generator-maven-plugin
            1.3.7
            
                
                src/main/resources/mybatis-generator-config.xml
            
        
        

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

MyBatis积累(1):MyBatis Generator 超详细配置_第1张图片

2.2.2、允许覆盖生成的文件

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


    
        
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.3.7
            
                
                src/main/resources/mybatis-generator-config.xml
                
                true
            
        
        

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

2.2.3、添加数据库驱动依赖

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

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


    
        
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.3.7
            
                
                src/main/resources/mybatis-generator-config.xml
                
                true
            
            
                
                
                    mysql
                    mysql-connector-java
                    8.0.17
                
            
        
        

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

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

MyBatis积累(1):MyBatis Generator 超详细配置_第2张图片

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

配置如下


    
        
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.3.7
            
                
                src/main/resources/mybatis-generator-config.xml
                
                true
                
                true
            
        
        

MyBatis积累(1):MyBatis Generator 超详细配置_第3张图片

2.2.4、添加其他依赖

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

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

MyBatis积累(1):MyBatis Generator 超详细配置_第4张图片

2.2.5、mybatis-generator-core 依赖

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

MyBatis积累(1):MyBatis Generator 超详细配置_第5张图片

2.3、配置 MyBatis Generator Config

2.3.1、mybatis-generator-config详情

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

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

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

MyBatis积累(1):MyBatis Generator 超详细配置_第6张图片





    
    

    
    
        
        
        
        

        






        

        
        
        

        
            
            
            
            
        

        
        
        
            
            
            
            
        

        
        
            
        

        
        
            
        


        
        
        

2.3.2、引入外部配置文件

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

MyBatis积累(1):MyBatis Generator 超详细配置_第7张图片

2.3.3、配置context

注意是配置在  下




  • id : 随便填,保证多个 context id 不重复就行
  • defaultModelType : 可以不填,默认值 conditionalflat表示一张表对应一个po
  • targetRuntime :可以不填,默认值 MyBatis3,常用的还有 MyBatis3Simple,这个配置会影响生成的 dao 和 mapper.xml的内容

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

MyBatis积累(1):MyBatis Generator 超详细配置_第8张图片

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

MyBatis积累(1):MyBatis Generator 超详细配置_第9张图片

MyBatis积累(1):MyBatis Generator 超详细配置_第10张图片

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 用来配置生成的注释。默认是生成注释的,并且会生成时间戳,如下

MyBatis积累(1):MyBatis Generator 超详细配置_第11张图片

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

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


    
    

复制代码

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


    
    

MyBatis积累(1):MyBatis Generator 超详细配置_第12张图片

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


    
    

jdbcConnection

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


    
    

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

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

文章 MyBatis Generator踩坑与自救

javaTypeResolver

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

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


    
    
    
    

javaModelGenerator

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


    
    
    
    

生成出来的 set 方法如下

MyBatis积累(1):MyBatis Generator 超详细配置_第13张图片

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

sqlMapGenerator

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


    

javaClientGenerator

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


    

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

MyBatis积累(1):MyBatis Generator 超详细配置_第14张图片

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

table

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


复制代码

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

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

MyBatis积累(1):MyBatis Generator 超详细配置_第15张图片

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

MyBatis积累(1):MyBatis Generator 超详细配置_第16张图片

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

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

2.4、使用 MyBatis Generator

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

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

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

你可能感兴趣的:(Mybatis,java)