• Mybatis generator


    逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    配置文件设置

    
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    生成

    启动方式: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(); } } }

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    使用中出现的异常

    Exception in thread “main” java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)
    解决:
    在这里插入图片描述

    Mybatis中javaType和jdbcType对应关系

    JDBCTypeJavaType
    CHARString
    VARCHARString
    LONGVARCHARString
    NUMERICjava.math.BigDecimal
    DECIMALjava.math.BigDecimal
    BITboolean
    BOOLEANboolean
    TINYINTbyte
    SMALLINTshort
    INTEGERint
    BIGINTlong
    REALfloat
    FLOATdouble
    DOUBLEdouble
    BINARYbyte[]
    VARBINARYbyte[]
    LONGVARBINARYbyte[]
    DATEjava.sql.Date
    TIMEjava.sql.Time
    TIMESTAMPjava.sql.Timestamp
    CLOBClob
    BLOBBlob
    ARRAYArray
    DISTINCTmapping of underlying type
    STRUCTStruct
    REFRef

    如:数据库字段为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

    插件式使用

    添加依赖和插件

    <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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    创建逆向工程的配置文件

    文件名必须是: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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    执行MBG插件的generate目标

    在这里插入图片描述
    如果出现报错:Exception getting JDBC Driver,可能是pom.xml中,数据库驱动配置错误

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

    1、dependency中的驱动
    在这里插入图片描述
    2、mybatis-generator-maven-plugin插件中的驱动
    在这里插入图片描述

    执行结果

    在这里插入图片描述

  • 相关阅读:
    华为云分布式数据库GaussDB,做金融数字化的坚实数据底座
    华为ICT——云计算基础知识、计算类技术听课笔记
    uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined
    金仓数据库KingbaseES客户端编程接口指南-Python(3. 数据库管理连接)
    6. Gin集成redis
    SSD上 NVIDIA Jetson Orin NANO系統如何刷
    Vuex状态管理:Getters
    ESP8266-Arduino编程实例-DS3231实时时钟(RTC)驱动
    Linux常用命令 - 权限管理命令
    游戏心理学Day19
  • 原文地址:https://blog.csdn.net/qq_40419080/article/details/130909718