前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java干货】Spring Boot集成Mybatis Generator自动生成代码插件

【Java干货】Spring Boot集成Mybatis Generator自动生成代码插件

作者头像
程序员洲洲
发布2024-06-07 13:16:05
1740
发布2024-06-07 13:16:05
举报
文章被收录于专栏:项目文章项目文章

前言:Mybatis Generator介绍

MyBatis Generator,缩写MBG,是一个Mybatis和iBatis的代码生成器。它支持Mybatis的所有版本,支持iBatis 2.2.0以后的版本。通过MyBatis Generator可以根据数据库表生成相应的实体、sql映射文件、Dao等,能应付简单的CRUD(Create, Retrieve, Update, Delete),对于连接查询或存储过程等还是要手动编写sql和对象。

MyBatis Generator可以自动的生成以下内容:

第一步:引入maven插件

在pom.xml里添加以下内容:

代码语言:javascript
复制
<build>
    <plugins>
        <!--mybatis自动生成代码插件-->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 -->
                <overwrite>true</overwrite>
            </configuration>
            <dependencies>
                <!--mysql驱动包-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.45</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

第二步:MyBatis Generator配置文件

MyBatis Generator默认好很多配置,我们只需要很少量的配置即可,下面展示一下最小量的配置(只生成POJO)。

既然要根据表来生成,所以肯定要连数据库,所以传说中的四个参数必不可少,我们需要通过jdbcConnection来告诉MBG数据库连接地址,另外表名也是必不可少的,MBG至少需要知道这两个信息才能为我们干活。所以,最小的配置如下所示:

代码语言:javascript
复制
<?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>
    <context id="MySql">
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/springboot"
                userId="root"
                password="root"/>
        <javaModelGenerator targetPackage="com.songguoliang.springboot.entity" targetProject="src/main/java"></javaModelGenerator>
        <table tableName="tbl_user"></table>
    </context>
</generatorConfiguration>

这里只生成POJO实体,并且放到com.songguoliang.springboot.entity包下,运行maven插件:

此时,实体已经生成了。

第三步:MyBatis Generator常规配置

上面只是生成了POJO,我们可能还想生成映射文件,dao接口文件等,先把generatorConfig.xml配置文件复制备份为generatorConfig-min.xml。

修改后的配置文件内容为:

代码语言:javascript
复制
<?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>

    <!-- defaultModelType="flat" 设置复合主键时不单独为主键创建实体 -->
    <context id="MySql" defaultModelType="flat">
        <!-- 生成的POJO实现java.io.Serializable接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

        <!--注释-->
        <commentGenerator>
            <!-- 将数据库中表的字段描述信息添加到注释 -->
            <property name="addRemarkComments" value="true"/>
            <!-- 注释里不添加日期 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!-- 数据库连接 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/springboot"
                userId="root"
                password="root"/>

        <!-- 生成POJO对象,并将类放到com.songguoliang.springboot.entity包下 -->
        <javaModelGenerator targetPackage="com.songguoliang.springboot.entity" targetProject="src/main/java"></javaModelGenerator>
        <!-- 生成mapper xml文件,并放到resources下的mapper文件夹下 -->
        <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources"></sqlMapGenerator>


        <!-- 生成mapper xml对应dao接口,放到com.songguoliang.springboot.mapper包下-->
        <javaClientGenerator targetPackage="com.songguoliang.springboot.mapper" targetProject="src/main/java" type="XMLMAPPER"></javaClientGenerator>

        <!-- table标签可以有多个,至少一个,tableName指定表名,可以使用_和%通配符 -->
        <table tableName="tbl_user">
            <!-- 是否只生成POJO对象 -->
            <property name="modelOnly" value="false"/>
            <!-- 数据库中表名有时我们都会带个前缀,而实体又不想带前缀,这个配置可以把实体的前缀去掉 -->
            <domainObjectRenamingRule searchString="^Tbl" replaceString=""/>

        </table>
    </context>
</generatorConfiguration>

重新运行MyBatis Generator的maven插件,生成如下内容:

第四步:配置数据库

实际项目中,我们的数据库连接已经在配置文件里配置过了,如果在generatorConfig.xml配置文件再配一次,比较麻烦,通常可以直接引入数据库的配置文件,如下:

application.properties内容:

代码语言:javascript
复制
## 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

generatorConfig.xml配置如下:

代码语言:javascript
复制
<?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="application.properties"/>

    <!-- defaultModelType="flat" 设置复合主键时不单独为主键创建实体 -->
    <context id="MySql" defaultModelType="flat">

        <!-- 生成的POJO实现java.io.Serializable接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

        <!--注释-->
        <commentGenerator>
            <!-- 将数据库中表的字段描述信息添加到注释 -->
            <property name="addRemarkComments" value="true"/>
            <!-- 注释里不添加日期 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!-- 数据库连接,直接通过${}读取application.properties里的配置 -->
        <jdbcConnection
                driverClass="${spring.datasource.driver-class-name}"
                connectionURL="${spring.datasource.url}"
                userId="${spring.datasource.username}"
                password="${spring.datasource.password}"/>

        <!-- 生成POJO对象,并将类放到com.songguoliang.springboot.entity包下 -->
        <javaModelGenerator targetPackage="com.songguoliang.springboot.entity" targetProject="src/main/java"></javaModelGenerator>
        <!-- 生成mapper xml文件,并放到resources下的mapper文件夹下 -->
        <sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources"></sqlMapGenerator>


        <!-- 生成mapper xml对应dao接口,放到com.songguoliang.springboot.mapper包下-->
        <javaClientGenerator targetPackage="com.songguoliang.springboot.mapper" targetProject="src/main/java" type="XMLMAPPER"></javaClientGenerator>

        <!-- table标签可以有多个,至少一个,tableName指定表名,可以使用_和%通配符 -->
        <table tableName="tbl_user">
            <!-- 是否只生成POJO对象 -->
            <property name="modelOnly" value="false"/>
            <!-- 数据库中表名有时我们都会带个前缀,而实体又不想带前缀,这个配置可以把实体的前缀去掉 -->
            <domainObjectRenamingRule searchString="^Tbl" replaceString=""/>

        </table>
    </context>
</generatorConfiguration>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:Mybatis Generator介绍
  • 第一步:引入maven插件
  • 第二步:MyBatis Generator配置文件
  • 第三步:MyBatis Generator常规配置
  • 第四步:配置数据库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档