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]