美文网首页
Spring Boot 集成Mybatis Generator和

Spring Boot 集成Mybatis Generator和

作者: 清_晨_ | 来源:发表于2018-12-01 19:08 被阅读80次

在spring boot + mybatis的项目中,我们可以利用mybatis mgenerator和通用mapper模板来自动生成项目中所需要的POJO类,以及对应的mapper接口mapper.xml文件,对于一些字段较多的表来说,可以节省很多时间,并且减少手写实体类所带来的错误。

1.创建一个spring boot项目

new-project
创建springboot

勾选web

点击next完成。

2.修改pom.xml文件

修改pom.xml文件,添加自动生成代码的依赖和通用mapper包的依赖

<?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.geneator.test</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.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>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 打war包 依赖tomcat api -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- 通用 Mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.8</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.45</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--mybatis-generator包-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.0.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <!--mybatis 自动生成dao,model,mapper,generaotr插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>

                <dependencies>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>3.4.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.oracle</groupId>
                        <artifactId>ojdbc6</artifactId>
                        <version>11.2.0.1.0</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <configurationFile>
                        ${basedir}/src/main/resources/generatorConfig.xml
                    </configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3.在resources目录下新建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>
    <!--引入配置文件-->
    <properties resource="db-config.properties"></properties>
    <!-- 引入数据库驱动 -->
    <classPathEntry location="${jdbc.driverClassLocation}"/>
       <!-- 这个地方使用MyBatis3,如果使用 MyBatis3Simple不生成XXXBySample-->
    <context id="baseset" targetRuntime="MyBatis3" defaultModelType="flat">
        <property name="javaFileEncoding" value="UTF-8"/>
        <property name="useMapperCommentGenerator" value="false"/>
        <!-- 通用mapper插件 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <!-- 此处的 MyMapper注意一定不能被扫描到-->
            <property name="mappers" value="${generator.mappers}"/>
            <!-- caseSensitive 是否区分大小写,默认值 false。如果数据库区分大小写,这里就需要配置为 true,这样当表名为 USER 时,
             会生成 @Table(name = "USER") 注解,否则使用小写 user 时会找不到表。-->
            <property name="caseSensitive" value="true"/>
            <!--forceAnnotation 是否强制生成注解,默认 false,如果设置为 true,不管数据库名和字段名是否一致,都会生成注解(包含 @Table 和 @Column)。-->
            <property name="forceAnnotation" value="true"/>
        </plugin>
        <commentGenerator>
            <property name="suppressDate" value="true"/><!-- 是否生成注释代时间戳-->
            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
        </commentGenerator>
        <jdbcConnection
                driverClass="${jdbc.driverClass}"
                connectionURL="${jdbc.connectionURL}"
                userId="${jdbc.username}"
                password="${jdbc.password}">
        </jdbcConnection>

        <javaModelGenerator targetPackage="${generator.javaModel-targetPackage}" targetProject="${generator.targetProject}"/>
        <sqlMapGenerator targetPackage="${generator.sqlMap-targetPackage}" targetProject="${generator.targetProject}"/>
        <javaClientGenerator targetPackage="${generator.javaClient-targetPackage}" targetProject="${generator.targetProject}"
                             type="XMLMAPPER"/>

        <!--数据库中对应的表名,多个表可以写多个tableName-->

        <table tableName="t_person_base_info"
               enableCountByExample="true" enableUpdateByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               selectByExampleQueryId="true">
            <generatedKey column="c_id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>
        </table>
        <table tableName="T_HEALTH_CHECK"
               enableCountByExample="true" enableUpdateByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               selectByExampleQueryId="true">
            <generatedKey column="c_id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>
        </table>
    </context>
</generatorConfiguration>

新建数据库配置文件

#jdbc 连接对象
#oracle jar文件位置
jdbc.driverClassLocation=D:/tools/ojdbc6-11.2.0.1.0.jar
jdbc.driverClass=oracle.jdbc.OracleDriver
jdbc.connectionURL=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=system
jdbc.password=123456

# Generator
generator.targetProject=src/main/java
generator.mappers=tk.mybatis.mapper.common.Mapper
generator.javaModel-targetPackage=com.geneator.test.demo.bean
generator.sqlMap-targetPackage=com.geneator.test.demo.xml
generator.javaClient-targetPackage=com.geneator.test.demo.mapper

数据库中新建对应的表。(此处我使用已有的表T_HEALTH_CHECK,t_person_base_info)

4.配置maven

点击run下的Edit Configurations.


进入后,点击左上角的+,选择maven.

在Name出输入名字,
在command line 中输入:mybatis-generator:generate -e

然后点击idea右上角的绿色箭头:

运行成功后控制台如下:
"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -Dmaven.multiModuleProjectDirectory=D:\geneatortest "-Dmaven.home=F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3" "-Dclassworlds.conf=F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\lib\idea_rt.jar=57949:F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\bin" -Dfile.encoding=UTF-8 -classpath "F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2018.1.2 mybatis-generator:generate -e
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- mybatis-generator-maven-plugin:1.3.2:generate (default-cli) @ demo ---
[WARNING] The POM for com.oracle:ojdbc6:jar:11.2.0.1.0 is missing, no dependency information available
[INFO] Connecting to the Database
[INFO] Introspecting table t_person_base_info
log4j:WARN No appenders could be found for logger (org.mybatis.generator.internal.db.DatabaseIntrospector).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[INFO] Introspecting table T_HEALTH_CHECK
[INFO] Generating Record class for table T_PERSON_BASE_INFO
[INFO] Generating Mapper Interface for table T_PERSON_BASE_INFO
[INFO] Generating SQL Map for table T_PERSON_BASE_INFO
[INFO] Generating Record class for table T_HEALTH_CHECK
[INFO] Generating Mapper Interface for table T_HEALTH_CHECK
[INFO] Generating SQL Map for table T_HEALTH_CHECK
[INFO] Saving file TPersonBaseInfoMapper.xml
[INFO] Saving file THealthCheckMapper.xml
[INFO] Saving file TPersonBaseInfo.java
[INFO] Saving file TPersonBaseInfoMapper.java
[INFO] Saving file THealthCheck.java
[INFO] Saving file THealthCheckMapper.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.343 s
[INFO] Finished at: 2018-12-01T18:15:17+08:00
[INFO] Final Memory: 17M/172M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

整个项目路径如下图:

5.生成的代码如下

1.生成的POJO对象如下:

package com.geneator.test.demo.bean;

import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;

@Table(name = "T_HEALTH_CHECK")
public class THealthCheck {
    @Column(name = "C_ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "select SEQ_T_HEALTH_CHECK.nextval from dual")
    private String cId;

    @Column(name = "HEALTH_RECORD_CODE")
    private String healthRecordCode;

    @Column(name = "HEALTH_CHECK_ID")
    private String healthCheckId;

    @Column(name = "NAME")
    private String name;

    @Column(name = "CHECK_DATE")
    private Date checkDate;


 /**
     * @param cId
     */
    public void setcId(String cId) {
        this.cId = cId;
    }

    /**
     * @return HEALTH_RECORD_CODE
     */
    public String getHealthRecordCode() {
        return healthRecordCode;
    }

    /**
     * @param healthRecordCode
     */
    public void setHealthRecordCode(String healthRecordCode) {
        this.healthRecordCode = healthRecordCode;
    }

 /**
     * @return HEALTH_CHECK_ID
     */
    public String getHealthCheckId() {
        return healthCheckId;
    }

    /**
     * @param healthCheckId
     */
    public void setHealthCheckId(String healthCheckId) {
        this.healthCheckId = healthCheckId;
    }

    /**
     * @return NAME
     */
    public String getName() {
        return name;
    }

    /**
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return CHECK_DATE
     */
    public Date getCheckDate() {
        return checkDate;
    }

    /**
     * @param checkDate
     */
    public void setCheckDate(Date checkDate) {
        this.checkDate = checkDate;
    }

2.生成的mapper对象如下:

package com.geneator.test.demo.mapper;

import com.geneator.test.demo.bean.THealthCheck;
import tk.mybatis.mapper.common.Mapper;

public interface THealthCheckMapper extends Mapper<THealthCheck> {
}

3.生成的mapper.xml文件如下:

相关文章

网友评论

      本文标题:Spring Boot 集成Mybatis Generator和

      本文链接:https://www.haomeiwen.com/subject/eljrcqtx.html