51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

IDEA中利用maven实现MyBatis逆向工程

原文作者:Bug 终结者
原文链接: https://bbs.huaweicloud.com/blogs/390689

一、IDEA+Maven实现MyBatis逆向工程 {#toc_h2_0}

大家好,本周博主为大家带来mybatis逆向工程的实现,具体如下:

二、什么是MyBatis逆向工程 {#toc_h2_1}

MyBatis Generator ,简称mbg,是专门为mybatis定制的代码生成器。

mybatis逆向工程,根据数据表生成Bean实体类、dao接口、mapper映射文件,封装了单表的增删改查操作,但是连表查询需要自定义。

使用Mybatis逆向工程前提要有数据库和数据表

三、使用MyBatis逆向工程的好处 {#toc_h2_2}

自动生成项目所需要的实体类,mapper接口,和xml文件,简化开发流程

四、如何实现MyBatis的逆向工程? {#toc_h2_3}

这里采用IDEA+Maven的方式实现逆向工程,下面进入具体代码编写:

4.1、项目结构图 {#toc_h3_4}

4.2、新建Maven项目 {#toc_h3_5}

File ---> New ---> Project... -> Maven ---> Next ---> 命名为MyBatisGenerator ---> 单击 Finsh 完成

4.3、编写配置文件 {#toc_h3_6}

pom.xml

  
  
                  <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>MyBatisGenerate</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <!-- 在控制台打印执行日志 --> <verbose>true</verbose> <!-- 重复生成时会覆盖之前的文件--> <overwrite>true</overwrite> <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> </configuration> <!-- 数据库5.7--> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>                  

    <svg>
                      <use xlink:href="#vditor-icon-copy" />
                    

    </svg>
                  </span>



  
  
                
                  <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    &lt;groupId&gt;org.example&lt;/groupId&gt;
    &lt;artifactId&gt;MyBatisGenerate&lt;/artifactId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
            &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt;
            &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;1.3.5&lt;/version&gt;
            &lt;configuration&gt;
                &lt;!-- 在控制台打印执行日志 --&gt;
                &lt;verbose&gt;true&lt;/verbose&gt;
                &lt;!-- 重复生成时会覆盖之前的文件--&gt;
                &lt;overwrite&gt;true&lt;/overwrite&gt;
                &lt;configurationFile&gt;src/main/resources/generatorConfig.xml&lt;/configurationFile&gt;
            &lt;/configuration&gt;




\<!--           数据库5.7--\>
\<dependencies\>
\<dependency\>
\<groupId\>mysql\</groupId\>
\<artifactId\>mysql-connector-java\</artifactId\>
\<version\>5.1.47\</version\>
\</dependency\>
\</dependencies\>
\</plugin\>
\</plugins\>
\</build\>
\</project\>


                </code>
              </pre>



 
新建database.properties配置文件

 
````javascript
  
    
                  #连接数据库 jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/ssmbuild?useSSL=true jdbc.username = root jdbc.password = 111111 #要生成的数据表 jdbc.table.user = user jdbc.table.books = books                  

    <svg>
                      <use xlink:href="#vditor-icon-copy" />
                    

    </svg>
                  </span>



  
    
                
                  #连接数据库
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssmbuild?useSSL=true
jdbc.username = root
jdbc.password = 111111

#要生成的数据表
jdbc.table.user = user
jdbc.table.books = books


                </code>
              </pre>



 
新建generatorConfig.xml配置文件

 
```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> <!-- 连接外部数据库配置文件--> <properties resource="database.properties"/> <!-- context 是逆向工程的主要配置信息 --> <!-- id:名字 --> <!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 --> <context id="default" targetRuntime="MyBatis3"> <!--optional,指在创建class时,对注释进行控制--> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--jdbc的数据库连接 --> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"></jdbcConnection> <!--非必须,类型处理器,在数据库类型和java类型之间的转换控制--> <javaTypeResolver> <!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 --> <!-- 不是 double 和 long 类型 --> <!-- 使用常用的基本类型代替 sql 包下的引用类型 --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- targetPackage:生成的实体类所在的包 --> <!-- targetProject:生成的实体类所在的硬盘位置 --> <javaModelGenerator targetPackage="com.wanshi.entity" targetProject="src/main/java"> <!-- 是否允许子包 --> <property name="enableSubPackages" value="false"/> <!-- 是否对modal添加构造函数 --> <property name="constructorBased" value="true"/> <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 --> <property name="trimStrings" value="true"/> <!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 --> <property name="immutable" value="false"/> </javaModelGenerator> <!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 --> <sqlMapGenerator targetPackage="com.wanshi.mapper" targetProject="src/main/java"> <!-- 针对数据库的一个配置,是否把 schema 作为字包名 --> <property name="enableSubPackages" value="false"/> </sqlMapGenerator> <!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.wanshi.mapper" targetProject="src/main/java"> <!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 --> <property name="enableSubPackages" value="false"/> </javaClientGenerator> <!-- tableName是数据库中的表名,domainObjectName是生成的JAVA类名,后面的参数不用改,要生成更多的表就在下面继续加table标签 --> <table tableName="${jdbc.table.user}" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="${jdbc.table.books}" domainObjectName="Books" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>                  

    <svg>
                      <use xlink:href="#vditor-icon-copy" />
                    

    </svg>
                  </span>



  
      
                
                  <?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>
<!--    连接外部数据库配置文件-->
    <properties resource="database.properties"/>

    &lt;!-- context 是逆向工程的主要配置信息 --&gt;
    &lt;!-- id:名字 --&gt;
    &lt;!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 --&gt;
    &lt;context id="default" targetRuntime="MyBatis3"&gt;
        &lt;!--optional,指在创建class时,对注释进行控制--&gt;
        &lt;commentGenerator&gt;
            &lt;property name="suppressDate" value="true"/&gt;
            &lt;!-- 是否去除自动生成的注释 true:是 : false:否 --&gt;
            &lt;property name="suppressAllComments" value="true"/&gt;
        &lt;/commentGenerator&gt;
        &lt;!--jdbc的数据库连接 --&gt;
        &lt;jdbcConnection driverClass="${jdbc.driver}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}"&gt;&lt;/jdbcConnection&gt;
        &lt;!--非必须,类型处理器,在数据库类型和java类型之间的转换控制--&gt;
        &lt;javaTypeResolver&gt;
            &lt;!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 --&gt;
            &lt;!-- 不是 double 和 long 类型 --&gt;
            &lt;!-- 使用常用的基本类型代替 sql 包下的引用类型 --&gt;
            &lt;property name="forceBigDecimals" value="false"/&gt;
        &lt;/javaTypeResolver&gt;
        &lt;!-- targetPackage:生成的实体类所在的包 --&gt;
        &lt;!-- targetProject:生成的实体类所在的硬盘位置 --&gt;
        &lt;javaModelGenerator targetPackage="com.wanshi.entity"
                            targetProject="src/main/java"&gt;
            &lt;!-- 是否允许子包 --&gt;
            &lt;property name="enableSubPackages" value="false"/&gt;
            &lt;!-- 是否对modal添加构造函数 --&gt;
            &lt;property name="constructorBased" value="true"/&gt;
            &lt;!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 --&gt;
            &lt;property name="trimStrings" value="true"/&gt;
            &lt;!-- 建立modal对象是否不可改变 即生成的modal对象不会有setter方法,只有构造方法 --&gt;
            &lt;property name="immutable" value="false"/&gt;
        &lt;/javaModelGenerator&gt;
        &lt;!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 --&gt;
        &lt;sqlMapGenerator targetPackage="com.wanshi.mapper"
                         targetProject="src/main/java"&gt;
            &lt;!-- 针对数据库的一个配置,是否把 schema 作为字包名 --&gt;
            &lt;property name="enableSubPackages" value="false"/&gt;
        &lt;/sqlMapGenerator&gt;
        &lt;!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 --&gt;
        &lt;javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.wanshi.mapper" targetProject="src/main/java"&gt;
            &lt;!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 --&gt;
            &lt;property name="enableSubPackages" value="false"/&gt;
        &lt;/javaClientGenerator&gt;
        &lt;!-- tableName是数据库中的表名,domainObjectName是生成的JAVA类名,后面的参数不用改,要生成更多的表就在下面继续加table标签 --&gt;
        &lt;table tableName="${jdbc.table.user}" domainObjectName="User"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"&gt;&lt;/table&gt;
        &lt;table tableName="${jdbc.table.books}" domainObjectName="Books"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"&gt;&lt;/table&gt;
    &lt;/context&gt;




\</generatorConfiguration\>


                </code>
              </pre>



 
### 4.4、Maven启动方式 {#toc_h3_7}


 
` Add Configuration ` ---\> ` + ` ---\> ` Maven ` -\> ` 编写Maven启动命令 ` ---\> ` Apply ` 同意 ---\> ` ok `

 
![](http://static.51tbox.com/static/2025-01-06/col/5ff3fe3b4dcdf4e5579d6d82bdf18b5d/7944f239678d463d9e8d9b7acfc0a667.jpg)

 
![](http://static.51tbox.com/static/2025-01-06/col/5ff3fe3b4dcdf4e5579d6d82bdf18b5d/95492d21217f4e1cbc62413bc97cbb10.jpg)

 
### 4.5、测试 {#toc_h3_8}


 
OK,已经编写完毕,测试一把

 
![](http://static.51tbox.com/static/2025-01-06/col/5ff3fe3b4dcdf4e5579d6d82bdf18b5d/450d064376834e4c860cef397b20451f.jpg)

 
五、结语 {#toc_h2_9}
----------------


 
       
>   
>         ok,到这里MyBatis逆向工程已成功生成,是不是很简单呢,赶快去试试吧\~
>
>  
>        

 
       

  
        
*** ** * ** ***

 标题:IDEA中利用maven实现MyBatis逆向工程 
 作者: https://51tbox.com/ 
 地址: / 

  
        
如未加特殊说明,文章均为原创,转载必须注明出处。均采用 https://creativecommons.org/licenses/by-sa/4.0/deed.zh-Hans !
  本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。  
  • 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。  
  • 公众号转载请联系网站首页的微信号申请白名单!  

  
        
*** ** * ** ***

  
 ![]() 

 
       

```


````

赞(2)
未经允许不得转载:工具盒子 » IDEA中利用maven实现MyBatis逆向工程