欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mybatis generator生成代码库 与指定的库不一致 为其他库的同名表

程序员文章站 2022-03-11 16:49:13
使用mybatis generator在自动生成代码时,数据库使用的是oracle,遇到一个问题就是生成的表对应的java文件和预期的表字段不一致,后面发现生成的是不同库的同名表网上查询解决办法都是mysql的通过在数据库连接配置中加上属性nullCatalogMeansCurrent解决

使用mybatis generator在自动生成代码时,数据库使用的是oracle,遇到一个问题就是生成的表对应的java文件和预期的表字段不一致,后面发现生成的是不同库的同名表
网上查询解决办法都是mysql的
通过在数据库连接配置中加上属性nullCatalogMeansCurrent解决

    <jdbcConnection driverClass="${jdbc.driverClassName}"
                    connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}" >
        <property name="useInformationSchema" value="true"/>
        <!--是否生成注释-->
        <property name="remarksReporting" value="true"/>
        <!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
        <!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
        <!--防止生成其他库同名表-->
        <property name="nullCatalogMeansCurrent" value="true" />
    </jdbcConnection>

此处加了后,无效,故分析源码后解决,希望可以帮助他人~~~
先把解决方案抛出吧
在生成器配置文件中的table配置中,配置schema属性为表所在数据库即可解决

<!--要生成哪些表 -->
        <!--schema设置使用哪个库中的表 -->
        <table enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false"
               tableName="BS_HOSP_PAY_STATISTICS" domainObjectName="BsHospPayStatistics" schema="BASIS_HEFEI"/>
               

具体原因则是:
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表

上面是根据配置文件中的连接信息等,去数据库中获取表信息的入口
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
到这里有个属性就是我们配置的了,在后续数据库进行查询表信息时,会用到。也是解决我遇到的问题的关键
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
此处调用连接工具进行数据库查询
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
这里可以看到一大段的sql语句
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
此时断点到达这里,而这个参数var就是前面调用连接工具入口传入的localSchema参数,而这个参数就是从table标签中的schema属性解析而来
我们拷出来后查看
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
此处的owner就对应了数据库
到此完结。。。
个人的一些方法,可能比较low 勿喷,有更好的解决方法的也麻烦留言

本文地址:https://blog.csdn.net/qq_34788642/article/details/107671829