美文网首页
利用 Mybatis-Generator自动生成代码

利用 Mybatis-Generator自动生成代码

作者: 索伦x | 来源:发表于2019-06-04 23:05 被阅读0次

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。

    POM.xml


    首先准备一个SSM的空工程:略

    <?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.suoron</groupId>
        <artifactId>SpringMybatisGenerator</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>war</packaging>
        <properties>
            <spring.version>4.2.5.RELEASE</spring.version>
            <freemarker.version>2.3.20</freemarker.version>
            <servlet-api.version>3.1.0</servlet-api.version>
            <jackson-databind.version>2.9.5</jackson-databind.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>3.0-alpha-1</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson-databind.version}</version>
            </dependency>
    
            <!-- swagger2 核心依赖 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.6.1</version>
            </dependency>
            <!-- swagger-ui 为项目提供api展示及测试的界面 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.6.1</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.8</version>
            </dependency>
            <!-- 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>4.1.4</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <finalName>mavenweb</finalName>
            <plugins>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    配置文件

    <?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">
    <!--mybatis-generator-maven-plugin生成数据库实体的配置文件-->
    <generatorConfiguration>
        <!--导入属性配置,前面我们写的一个配置文件,你也可以直接使用mybatis的jdbc的配置文件 -->
        <properties resource="jdbc.properties"></properties>
        <!-- 数据库驱动,注意,这里必须要修改成你的数据库的驱动地址-->
        <classPathEntry
                location="D:/maven/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar"/>
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="false"/>
            </commentGenerator>
            <!--数据库链接URL,用户名、密码 -->
            <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.username}" password="${jdbc.password}">
            </jdbcConnection>
            <!--是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal-->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="ture"/>
            </javaTypeResolver>
            <!-- 生成模型的包名和位置-->
            <javaModelGenerator targetPackage="com.suoron.springmvc.pojo" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
            <!-- 生成映射文件的包名和位置-->
            <sqlMapGenerator targetPackage="mapperXml" targetProject="src/main/resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
            <!-- 生成DAO的包名和位置-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.suoron.springmvc.dao.mapping" targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名,这里举例,只配置了一个table,你可以配置多个-->
            <table tableName="t_user" domainObjectName="TbUser" enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
    
        </context>
    </generatorConfiguration>
    

    测试

    mvn mybatis-generator:generate

    扩展自动生成代码

    pojo

    public class PbGoodsInfo extends TbGoodsInfo {
        @Column(name = "goods_type")
        private String goodsType;
    
        public String getGoodsType() {
            return goodsType;
        }
        public void setGoodsType(String goodsType) {
            this.goodsType = goodsType;
        }
    }
    

    XML

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.suoron.myshop.dao.mapping.ext.TbGoodsInfoMapperExt" >
    
      <resultMap id="BaseResultMap" type="com.suoron.myshop.dao.pojo.ext.PbGoodsInfo"
                 extends="com.suoron.myshop.dao.mapping.TbGoodsInfoMapper.BaseResultMap">
      </resultMap>
    
      <resultMap id="UnBaseResultMap" type="com.suoron.myshop.dao.pojo.ext.PbGoodsInfo"
               extends="com.suoron.myshop.dao.mapping.TbGoodsInfoMapper.BaseResultMap">
        <result column="goods_type" property="goodsType"/>
      </resultMap>
    
      <select id="goodsSearch" resultMap="BaseResultMap">
          select * from t_goods_info
          <where>
              <if test="goodsName != null and goodsName.length() > 0">
                  goods_name like '%${goodsName}%'
              </if>
          </where>
          <if test="orderStr != null and orderStr.length() > 0">
              ${orderStr}
          </if>
      </select>
    

    注意事项

    覆盖生成前,必须先删除原有xml文件,否则会导致xml内容重复生成。

    相关文章

      网友评论

          本文标题:利用 Mybatis-Generator自动生成代码

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