美文网首页
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