Mybatis逆向工程针对Oracle数据库

        点击打开链接https://blog.csdn.net/dingsai88/article/details/51252272

如果指定的oracle数据库下的多个表空间存在同一张表时,必须要指定schema的值,否则要出现生成的代码和Mapper.xml文件中出现重复的代码和配置,然后导致项目在启动时出现以下错误:

Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.tyky.mapper.TSysUserMapper.BaseResultMap

此错误是说明在逆向工程生成的xxxMapper.xml文件中出现了多个<resultMap id="BaseResultMap" type="xxx" >,正常情况下一个mapper.xml文件中只会出现一个<resultMap id="BaseResultMap" type="xxx" >标签。

要避免此错误的产生,需要在Mybatis逆向工程的generatorConfig.xml中配置指定要生成代码的table时使用以下配置:

<!-- 指定数据库表 -->
<table schema="dzjc_zhejiang" tableName="t_sys_user"></table>   

其中的 schema="dzjc_zhejiang"就是指定oralce的表空间,避免其他表空间下有同名的表时对逆向工程生成的代码产生干扰。

经测试 , 如果数据库是Oracle SqlServer需要去掉schema 属性 , MySql则不需要去掉 !!!

另,如果项目启动过程中报以下错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

解决方法:在maven工程下的pom.xml中添加以下配置:

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
    <build>  
        <resources>  
            <resource>  
                <directory>src/main/java</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>  
                <filtering>false</filtering>  
            </resource>  
        </resources>  

    </build> 

关于oracle表名区分大小写的问题

  oracle不是区分大小写的,是建表的时候是没有去掉双引号。

  CREATE TABLE TableName(id number); //虽然写的时候是有大写和小写,但是在数据库里面是不区分的。

  select * from tablename; //这样是可以的

  SELECT * FROM TABLENAME; //这样写也不会有问题

  SELECT * FROM TableName; //都没问题

  CREATE TABLE "TableName"("id" number); // 如果创建表的时候是这样写的,那么就必须严格区分大小写

  SELECT * FROM "TableName"; //不仅要区分大小写而且要加双引号,以便和上面的第三种查询方式区分开。

  所以问题不在于oracle,而是你的同事创建表的时候没有去掉双引号。

  与其改sql还不如把表改过来......


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值