zoukankan      html  css  js  c++  java
  • Mybatis generator


    Exception in thread "main" java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)

    解决:

    依赖:

      <!-- mysql -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.18</version>
        </dependency>
        <!--Mybatis逆向工程-->
        <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.7</version>
        </dependency>
    
        <!--mybatis-->
        <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
          <version>1.3.3</version>
        </dependency>

    配置文件: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>
    
        <!--
            targetRuntime="MyBatis3Simple":生成简单版的CRUD
            MyBatis3:豪华版
    
         -->
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <commentGenerator>
              <!--  <property name="suppressAllComments" value="false" />-->
            </commentGenerator>
            <!-- jdbcConnection:指定如何连接到目标数据库 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/zycf?characterEncoding=utf8"
                            userId="root"
                            password="123456">
            </jdbcConnection>
    
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer;
            为 true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
            <javaTypeResolver >
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- javaModelGenerator:指定javaBean的生成策略
            targetPackage="test.model":目标包名
            targetProject="MBGTestProjectsrc":目标工程
            -->
            <!-- 生成Pojo包名和位置 -->
            <javaModelGenerator targetPackage="com.lhh.entity"
                                targetProject=".srcmainjava">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="true" />
                <!-- 清理前后的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
    
            <!-- 生成Mapper映射XML文件位置 -->
            <sqlMapGenerator targetPackage="resources.mapper"
                             targetProject=".srcmain">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
    
            <!-- 生成Mapper接口文件位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.lhh.dao"
                                 targetProject=".src">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
    
            <!-- 指定要逆向分析哪些表:根据表要创建javaBean(POJO) -->
            <!-- tableName:要生成的表名
            domainObjectName:生成后的实例名
            enableCountByExample:Count语句中加入where条件查询,默认为true开启
            enableUpdateByExample:Update语句中加入where条件查询,默认为true开启
            enableDeleteByExample:Delete语句中加入where条件查询,默认为true开启
            enableSelectByExample:Select多条语句中加入where条件查询,默认为true开启
            selectByExampleQueryId:Select单个对象语句中加入where条件查询,默认为true开启
            -->
            <table tableName="zycf_mediaoperate_weixin_release" domainObjectName="MediaRelease"
                   enableCountByExample="true" enableUpdateByExample="true"
                   enableDeleteByExample="true" enableSelectByExample="true"
                   selectByExampleQueryId="true">
                <!--如果table里边不配置property,默认将所有字段逆向生成为类属性。 -->
               <!-- <property name="" value=""/>-->
                <!--如果有些字段并不想生成为类属性,可以用ignoreColumn标签:-->
                <!--<ignoreColumn column="FRED" />//忽略字段-->
                <!--还可以指定逆向生成时,字段到属性的转换对应关系-->
                <!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />//无论字段是什么类型,生成的类属性都是varchar。 -->
            </table>
            <table tableName="zycf_mediaoperate_weixin_article" domainObjectName="Article"></table>
        </context>
    </generatorConfiguration>

    启动方式:SpringBoot项目,此处直接用测试类来运行了

    /**
     * @(#)generatorTest.java, 2019/11/24.
     * <p/>
     * Copyright 2019 Netease, Inc. All rights reserved.
     * NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
     */
    package com.lhh;
    
    import org.junit.Test;
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.exception.InvalidConfigurationException;
    import org.mybatis.generator.exception.XMLParserException;
    import org.mybatis.generator.internal.DefaultShellCallback;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.io.File;
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author 吕厚厚(wb.lvhouhou @ mesg.corp.netease.com)
     */
    
    @SpringBootTest
    public class generatorTest {
    
        @Test
        public void generator(){
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            //指向逆向工程配置文件
            try {
                File configFile = new File("generatorConfig.xml");
                ConfigurationParser cp = new ConfigurationParser(warnings);
                Configuration config = cp.parseConfiguration(configFile);
                DefaultShellCallback callback = new DefaultShellCallback(overwrite);
                MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                        callback, warnings);
                myBatisGenerator.generate(null);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XMLParserException e) {
                e.printStackTrace();
            } catch (InvalidConfigurationException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

     数据库字段为smallint时,逆向工程生成的Short类型

    数据库表:

     自动生成的实体类属性:

    int、bigint、smallint 和 tinyint是使用整数数据的精确数字数据类型。

    主要类型、范围、存储体如下:

    1)bigint:从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(19位数字),存储 8 个字节。————有点儿像Java的long

    2)int:从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647)(10位数字,+-21亿) 的整型数据。存储 4 个字节。                   ————有点儿像int

    3)smallint:从 -2^15 (-32,768) 到 2^15 - 1 (32,767) (5位数字,65535)的整型数据,存储2 个字节。                                      ————有点儿像short

    4)tinyint:从 0 到 255(256) 的整型数据,存储 1 字节。                                                                                                           ————有点儿像byte     如果“tinyInt 长度为Bit” 值为0或1  MySQL中 使用布尔类型的字段,就用 tinyint(1),true 为1 false 为0

    Mybatis中javaType和jdbcType对应关系

       JDBCType            JavaType
        CHAR                String
        VARCHAR             String
        LONGVARCHAR         String
        NUMERIC             java.math.BigDecimal
        DECIMAL             java.math.BigDecimal
        BIT                 boolean
        BOOLEAN             boolean
        TINYINT             byte
        SMALLINT            short
        INTEGER             int
        BIGINT              long
        REAL                float
        FLOAT               double
        DOUBLE              double
        BINARY              byte[]
        VARBINARY           byte[]
        LONGVARBINARY       byte[]
        DATE                java.sql.Date
        TIME                java.sql.Time
        TIMESTAMP           java.sql.Timestamp
        CLOB                Clob
        BLOB                Blob
        ARRAY               Array
        DISTINCT            mapping of underlying type
        STRUCT              Struct
        REF                 Ref
        DATALINK            java.net.URL[color=red][/color]
  • 相关阅读:
    Android UI--自定义ListView(实现下拉刷新+加载更多)
    12306火车票订票网站的一个Bug
    golang中赋值string到array
    Node.js学习(14)----EJS模板引擎
    操作系统
    springMVC学习笔记--初识springMVC
    sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0
    对于事务和同步(并发)的简要理解
    Jsoup入门
    [LeetCode]Single Number
  • 原文地址:https://www.cnblogs.com/lvhouhou/p/11925014.html
Copyright © 2011-2022 走看看