Springboot结合mybatis和mybatis generator的插件,利用tk.mybatis的通用mapper实现逆向工程。

SpringBoot结合Mybatis的generator插件以及tk.mybatis的通用mapper实现逆向工程的生成
1.首先在数据库中建好表。
2.然后在pom中增加mybatis和通用mapper的依赖,以及generator的插件。
3.需要自己在utils中的MyMapper中继承tk.mybatis中的通用模板。
在这里插入图片描述
4.然后编辑generator.xml文件,注意和properties中配置的结合,设置好mapper生成的文件的具体位置。具体可以看帖的代码的注释。
需要特别注意的是:generator.xml文件中,context内的文件要按序放,不然会报错
5.然后在IDEA中点击右侧的maven 插件,选择generate即可。
在这里插入图片描述
6.生成mapper文件后,会发现mapper继承了我们的MyMapper。
下图所示的XXXXMapper和POJO中的Entity类和resource中的mapper.xml就是逆向生成的产物。

在这里插入图片描述
7.逆向工程生成之后,想要实现简单的CRUD操作还要记得,在入口类上添加MapperScan注解。并且serviceImpl中也要加上@Service注解。
在这里插入图片描述
另外本人在实践的时候发现注入Mapper会报错,在Mapper.java上添加@Mapper并没有用。但是不影响运行。
如果大家觉得看着碍眼,就在Mapper上加一个@Component的注解。

更新:发现加上@Mapper才可以运行,@Component不行。具体原因未知。求教。
在这里插入图片描述

现将pom.xml文件和generatorConfig.xml以及properties文件附上。

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>com.martina</groupId>
    <artifactId>o2o</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>o2o</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <druid.version>1.1.10</druid.version>
        <mysql.version>5.1.46</mysql.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <!--SpringBoot test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--Mysql连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>${mysql.version}</version>
        </dependency>
        <!--引入阿里巴巴的数据源-->

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <!--Mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--通用mapper,使用mapper模板进行-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>
        <!--这个是用于display生成generator.xml文件的时候用的,这里我们用插件生成,所以注释掉不影响-->
       <!-- <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork> <!-- fork=true,用于明确表示编译版本配置的可用 -->
                </configuration>
            </plugin>

            <!-- mybatis逆向工程插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <!--允许移动生成的文件 -->
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <!--下面这两个依赖不引入是不会逆向生成的-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.46</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.4.3</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>


</project>

generatorConfig.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>
    <!-- 引入 application.properties -->

    <properties resource="application.properties" />

    <!-- MyBatis3Simple:不生成 Example相关类及方法 defaultModelType="flat" -->
    <context id="MysqlContext" targetRuntime="MyBatis3Simple" >

        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!-- 指定生成 Mapper 的继承模板 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="${generator.mappers}"/>
        </plugin>

        <!--注意context内的文件要按序放-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>


        <!-- jdbc 连接配置 -->
        <jdbcConnection driverClass="${spring.datasource.driver-class-name}"
                        connectionURL="${spring.datasource.url}"
                        userId="${spring.datasource.username}"
                        password="${spring.datasource.password}">
        </jdbcConnection>

        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成实体类的包名和位置 ,targetPackage指的是包名,targetProject值得是路径位置-->
        <!-- 对于生成的pojo所在包,pojo其实就是domain Entity-->
        <javaModelGenerator targetPackage="${generator.javaModel-targetPackage}" targetProject="${generator.targetProject}">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 对于生成的mapper.xml所在目录 -->
        <sqlMapGenerator targetPackage="${generator.sqlMap-targetPackage}" targetProject="src/main/resources"/>

        <!-- 配置mapper对应的java映射  也可以叫dao层 -->
        <javaClientGenerator targetPackage="${generator.javaClient-targetPackage}" targetProject="${generator.targetProject}"
                             type="XMLMAPPER"/>


        <table tableName="tb_area"></table>

    </context>
</generatorConfiguration>

配置文件中的配置:

# Generator
generator.targetProject=src/main/java
generator.mappers=com.martina.o2o.utils.MyMapper
generator.javaModel-targetPackage=com.martina.o2o.pojo
generator.sqlMap-targetPackage=mapper
generator.javaClient-targetPackage=com.martina.o2o.mapper


如果读者在操作过程中发现错误,可以查看我的 另一篇文章:《mybatis通用模板 错误记录》

猜你喜欢

转载自blog.csdn.net/mulinsen77/article/details/83961441