• MyBatis逆向工程 —【解决生成多个实体——解决映射文件重复出现BaseResultMap】


    MyBatis逆向工程 一个表生成一个实体

    1. 引入依赖

    pom.xml

    
    <plugin>
        <groupId>org.mybatis.generatorgroupId>
        <artifactId>mybatis-generator-maven-pluginartifactId>
        <version>1.3.3version>
        <configuration>
            
            <configurationFile>mybatis-generator.xmlconfigurationFile>
            <verbose>trueverbose>
            <overwrite>trueoverwrite>
        configuration>
    plugin>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 创建配置文件mybatis-generator.xml

    在这里插入图片描述

    mybatis-generator.xml

    
    DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
        
        <classPathEntry
                location="C:\Users\abc\.m2\repository\mysql\mysql-connector-java\8.0.29\mysql-connector-java-8.0.29.jar"/>
        
        <context id="tables" targetRuntime="MyBatis3" defaultModelType="flat">
            
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
            
            <commentGenerator>
                
                <property name="suppressAllComments" value="true"/>
            commentGenerator>
            
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/study?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
                            userId="root"
                            password="123456">
                
                <property name="nullCatalogMeansCurrent" value="true"/>
            jdbcConnection>
            
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            javaTypeResolver>
    
            
            <javaModelGenerator targetPackage="com.guo.springboot.model"
                                targetProject="D:\SpringBoot\day15\02-springboot-dubbo-ssm-interfacce\src\main\java">
                
                <property name="enableSubPackages" value="false"/>
                
                <property name="trimStrings" value="true"/>
            javaModelGenerator>
    
            
            <sqlMapGenerator targetPackage="com.guo.springboot.mapper"
                             targetProject="src/main/java">
                
                <property name="enableSubPackages" value="false"/>
            sqlMapGenerator>
    
            
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.guo.springboot.mapper"
                                 targetProject="src/main/java">
                
                <property name="enableSubPackages" value="false"/>
            javaClientGenerator>
    
            
            
            <table tableName="student" domainObjectName="Student"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   selectByExampleQueryId="false"/>
            
    
        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
    • 78
    • 79
    • 80

    3. 运行插件

    3.1 双击运行

    在这里插入图片描述

    3.2 建立成功——BUILD SUCCESS

    在这里插入图片描述

    3.3 生成一个实体Bean 映射文件 DAO接口

    在这里插入图片描述

    3.3 生成多个实体

    defaultModelType属性不设置默认是conditional
    此时主键生成一个XXKey对象(key class),
    在这里插入图片描述

    4. 总结

    4.1 解决一表生成多个实体

    逆向工程生成实体的个数与数据库表设计的复杂度有关系,默认会根据表中主键和blob来确定创建实体的个数,,如果只需要一个实体还是可以通过生成器配置文件来设置的。
    MyBatis Generator配置文件context元素有一个defaultModelType属性,这个属性的值会影响实体类(或叫domain类,model类)的生成。

    defaultModelType:指定生成对象的样式——支持conditional、 flat、hierarchical3个值:

    1. conditional 这是默认值
      这个模型与hierarchical模型相似,除了如果一个实体类只包含一个字段,则不会单独生成此实体类。因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。

    2. flat
      该模型为每一张表只生成一个实体类。所有内容(主键,blob)等全部生成在一个对象中;一般使用这个模型就够了。

    3. hierarchical
      如果表有主键,
      主键生成一个XXKey对象(key class),
      Blob等单独生成一个对象,其他简单属性在一个对象中(record class)
      MBG会在所有生成的实体类之间维护一个继承关系。
      显然这个模型比较复杂。

    在这里插入图片描述

    4.2 解决生成映射文件中重复出现BaseResultMap

    Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guo.springboot.mapper.StudentMapper.BaseResultMap
    
    • 1

    逆向工程生成的映射文件(StudentMapper.xml)中BaseResultMap重复出现,mapper.xml文件中也会出现关于这些字段的SQL语句
    解决办法:在生成器的mybatis-generator.xml配置文件里的数据库连接地址中添加:nullCatalogMeansCurrent参数(
    在这里插入图片描述

  • 相关阅读:
    解决uniapp微信小程序canvas不能引入字体的问题
    认识数据分析
    不可以涩涩!AI续写软件初体验;迁移学习路线图;谷歌新闻非官方搜索API;CS295『因果推理』2021课程资料;前沿论文 | ShowMeAI资讯日报
    .net生鲜超市销售系统
    PC端 VUE 官网项目 前端开发 响应式布局(宽+高 等比例缩放)
    FPGA实现10M多功能信号发生器
    C/C++数据结构——QQ帐户的申请与登陆(散列表)
    mybatis查询text类型字段时返回Nclob,导致json格式化时报错
    考研数据结构大题整合_组一(ZYL组)
    spring 如何解决循环依赖
  • 原文地址:https://blog.csdn.net/qq_45896330/article/details/126560922