Mybatis generator

文章目录

  • 依赖式使用
    • 引入依赖
    • 配置文件设置
    • 生成
      • 使用中出现的异常
    • Mybatis中javaType和jdbcType对应关系
    • int、bigint、smallint 和 tinyint是使用整数数据的精确数字数据类型。
  • 插件式使用
    • 添加依赖和插件
    • 创建逆向工程的配置文件
    • 执行MBG插件的generate目标
    • 执行结果

逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
Java实体类
Mapper接口
Mapper映射文件

有以下两种实现逆向工程的方式

依赖式使用

引入依赖


    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>5.1.18version>
    dependency>
    
    <dependency>
      <groupId>org.mybatis.generatorgroupId>
      <artifactId>mybatis-generator-coreartifactId>
      <version>1.3.7version>
    dependency>

    
    <dependency>
      <groupId>org.mybatis.spring.bootgroupId>
      <artifactId>mybatis-spring-boot-starterartifactId>
      <version>1.3.3version>
    dependency>

配置文件设置


DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>

    
    <context id="DB2Tables" targetRuntime="MyBatis3">
        
        <commentGenerator>
          
        commentGenerator>
        
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/zycf?characterEncoding=utf8"
                        userId="root"
                        password="123456">
        jdbcConnection>

        
        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        javaTypeResolver>

        
        
        <javaModelGenerator targetPackage="com.lhh.entity"
                            targetProject=".\src\main\java">
            
            <property name="enableSubPackages" value="true" />
            
            <property name="trimStrings" value="true" />
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="resources.mapper"
                         targetProject=".\src\main">
            <property name="enableSubPackages" value="true" />
        sqlMapGenerator>

        
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lhh.dao"
                             targetProject=".\src">
            <property name="enableSubPackages" value="true" />
        javaClientGenerator>

        
        
        <table tableName="zycf_mediaoperate_weixin_release" domainObjectName="MediaRelease"
               enableCountByExample="true" enableUpdateByExample="true"
               enableDeleteByExample="true" enableSelectByExample="true"
               selectByExampleQueryId="true">
            
           
            
            
            
            
        table>
        <table tableName="zycf_mediaoperate_weixin_article" domainObjectName="Article">table>
    context>
generatorConfiguration>

生成

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

/**
 * @(#)generatorTest.java, 2019/11/24.
 * 

* 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(); } } }

使用中出现的异常

Exception in thread “main” java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)
解决:
Mybatis generator_第1张图片

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

如:数据库字段为smallint时,逆向工程生成的Short类型
数据库表:
Mybatis generator_第2张图片
自动生成的实体类属性:
Mybatis generator_第3张图片

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

插件式使用

添加依赖和插件

<dependencies>
	
	<dependency>
		<groupId>org.mybatisgroupId>
		<artifactId>mybatisartifactId>
		<version>3.5.9version>
	dependency>
	
	<dependency>
		<groupId>junitgroupId>
		<artifactId>junitartifactId>
		<version>4.13.2version>
		<scope>testscope>
	dependency>
	
	<dependency>
		<groupId>mysqlgroupId>
		<artifactId>mysql-connector-javaartifactId>
		<version>8.0.27version>
	dependency>
	
	<dependency>
		<groupId>log4jgroupId>
		<artifactId>log4jartifactId>
		<version>1.2.17version>
	dependency>
dependencies>

<build>
	
	<plugins>
		
		<plugin>
			<groupId>org.mybatis.generatorgroupId>
			<artifactId>mybatis-generator-maven-pluginartifactId>
			<version>1.3.0version>
			
			<dependencies>
				
				<dependency>
					<groupId>org.mybatis.generatorgroupId>
					<artifactId>mybatis-generator-coreartifactId>
					<version>1.3.2version>
				dependency>
				
				<dependency>
					<groupId>com.mchangegroupId>
					<artifactId>c3p0artifactId>
					<version>0.9.2version>
				dependency>
				
				<dependency>
					<groupId>mysqlgroupId>
					<artifactId>mysql-connector-javaartifactId>
					<version>8.0.27version>
				dependency>
			dependencies>
		plugin>
	plugins>
build>

创建逆向工程的配置文件

文件名必须是:generatorConfig.xml


DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis"
                        userId="root"
                        password="123456">
        jdbcConnection>
        
        <javaModelGenerator targetPackage="com.atguigu.mybatis.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        javaModelGenerator>
        
        <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
                         targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        sqlMapGenerator>
        
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        javaClientGenerator>
        
        
        
        <table tableName="t_emp" domainObjectName="Emp"/>
        <table tableName="t_dept" domainObjectName="Dept"/>
    context>
generatorConfiguration>

执行MBG插件的generate目标

Mybatis generator_第4张图片
如果出现报错:Exception getting JDBC Driver,可能是pom.xml中,数据库驱动配置错误

下面两处的驱动版本要相同

1、dependency中的驱动
Mybatis generator_第5张图片
2、mybatis-generator-maven-plugin插件中的驱动
Mybatis generator_第6张图片

执行结果

Mybatis generator_第7张图片

你可能感兴趣的:(java,mybatis,java,spring,boot)