使用mybatis连接oracle数据库进行查询,最好确保表命全大写,否者会出现ORA-00904: invalid identifier的问题

注:本人使用的mybatis版本是3.0.5

二、问题描述:

我使用ibator工具产生的代码,有一个Dao的测试类,但是一执行就出现了ORA-00904: invalid identifier,如图:

原因分析,大部分情况下是由于引用了不存在的列名导致的。 解决的办法就是检查自己引用的列名称是否一致。对于某些工具生成的sql,可能导致列名称和期望不符的情况,比如,有些工具生成的列名称会带双引号,从而导致此错误。

经过查询和本人的实践验证,oracle执行查询时(这里以11g为例),对于特殊的字段命名有着非常严格的语法要求,如果是字段名称按照单词首字母大写的规范进行命名,在进行条件查询的时候必须,字段名称必须与原来命名一样并且要加上双引号,否则会包ORA-00904: invalid identifier。以下是本案例的测试截图:

表结构:

执行查询:

从执行的结果可以知道,最终oracle在执行sql语句的时候把条件查询的字段名转成了全大写,遇到表中没有找到相关的字段(区分大小写),就出现了此错误。查询指定字段的值也是如此:

表结构:

执行查询:

三、解决办法

总结:

3.1oracle在执行sql语句进行查询的时候,默认的情况下(查询的时候不给字段加双引号),会将字段名称转换成全大写之后再到表中进行匹配查询,比如:执行select from dept where id=1,则实际执行的是:select from DEPT where ID=1,这里表名和字段名全部都会转成全大写去匹配查询,一旦匹配不到(真正匹配字段名和名的时候区分大小写),则会报错误。

3.2如果设计表的时候不想表名和字段名都全大写,则在进行查询的时候需要在表名或者字段名称加上双引号(相当于告知oracle不要对sql语句中指定的表名或者字段名转成全大写),并且区分大小写,这样执行查询才不会发生错误。

##解决方法##

因此解决的办法就是,在给字段名称进行命名的时候,建议全大写,对于表名也是全大写命名,这样不管是进行条件查询还是查询指定字段的名称的时候,都不需要严格区分大小写了并且还要加上双引号了,Oracle会自动帮你先转成全大写之后再进行匹配查询。

oracle执行大sql,mybatis连接oracle执行sql语句出现ORA相关推荐

  1. sql server配置连接oracle数据库,MS SQL Server连接Oracle

    MS SQL Server连接Oracle 1.  安装oracle 10G客户端 要访问oracle数据库必须安装oracle客户端.安装oracle客户端有两种方式,即完整安装和立即安装,这两种方 ...

  2. PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决

    PL/SQL developer连接oracle出现"ORA-12154:TNS:could not resolve the connect identifier specified&quo ...

  3. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码

    PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...

  4. sql怎么与oracle连接,sql怎么连接oracle数据库

    慕田峪9158850 第一步 安装好oracle客户端,并配置好TNS信息先配置好oracle的TNS连接信息.这个跟正常情况使用oracle完全一样ORCL =(DESCRIPTION =(ADDR ...

  5. Spring Boot整合MyBatis连接Oracle数据库

    步骤如下: 1.Spring Boot项目添加MyBatis依赖和Oracle驱动: 1 2 3 4 5 6 7 8 9 10 <dependency>  <groupId>o ...

  6. pl/sql远程连接oracle服务器问题(各种情况) .,plsql远程连接oracle服务器问题(各种情况).docx...

    plsql远程连接oracle服务器问题(各种情况).docx PLSQL远程连接oracle服务器问题(各种情况)1.病毒软件的防火墙可以关闭试试在连接.2.环境变量path里面没有加上%ORACL ...

  7. PL/SQL远程连接Oracle数据库服务器

    使用PL/SQL Developer  远程连接 Oracle数据库(10.2.0.1 RHEL  AS 5.4),见附件 转载于:https://blog.51cto.com/longtian001 ...

  8. linux下安装oracle客户端,实现远程连接oracle库,导出数据表

    工作中用到不安装oracle服务端,只安装客户端. 一:首先要到下载rpm包,使用如下,命令安装 rpm -ivh oracle/oracle-instantclient11.2-basic-11.2 ...

  9. python连接oracle报错dpi 1047_python连接Oracle的方式以及过程中遇到的问题

    一.库连接步骤 1.下载cx_Oracle模块 下载步骤 工具 pycharm :File--->右键setting--->找到Project Interpreter  -----> ...

  10. python 连接 oracle 循环,4.使用cx_Oracle连接Oracle(高级篇)

    [Python运维]使用cx_Oracle连接Oracle(高级篇) 这节的内容较多,分别是: 使用sys用户连接Oracle数据库 通过函数执行SQL语句 通过读取文件内的内容来执行SQL语句 使用 ...

最新文章

  1. 关于Presenting view controllers on detached view ...
  2. SAP HUM 内向交货单凭证流和Relationship Browser
  3. 浅析日常网站建设中运营与优化的工作重点
  4. Struts2---入门
  5. “三通一达”创始人均来自桐庐 有的村人均GDP上亿
  6. 领英全球副总裁:如何做到 5 亿用户增长的 ?
  7. matlab 层次聚类
  8. 框架学习之Hibernate 第十节 事务原理与分析
  9. 2017.10.6 单词 思考记录
  10. model.evaluate 输出出一大串 ======================
  11. pythonpandas入门_pyhton pandas数据分析基础入门(一文看懂pandas)
  12. 《pr2019》怎么加字幕
  13. java随机生成测试数据
  14. dropbox无法访问后国内网盘对比选择
  15. js使用Canvas将多张图片合并成一张
  16. Spring Boot多数据源配置并通过注解实现动态切换数据源
  17. 基于OpenGL的雷达P显的系统设计与仿真 PPI_雷达仿真_雷达模拟器_雷达目标_雷达ppi_PPI显示器_源码
  18. ITASCA PFC 2D3D DISCERETE ELEMENT MODELING
  19. 嵌入式开发和应用技术大全
  20. 总结什么是SPU,SKU(复习)

热门文章

  1. CentOS 5.4安装rar
  2. 30而立--男人必须明白的事
  3. 结对编程项目-四则运算 第二周
  4. 第04章:MongoDB基本概念
  5. Linux服务器配置Redis并启用PHP支持
  6. typeof和instanceof的用法
  7. 页面指令JSP常见的指令有哪些?(面试必备)
  8. 2008秋季-计算机软件基础-0917课堂用例(1)
  9. 为什么mfc要注册WNDCLASS样式
  10. mysql count 条件_MySQL的COUNT语句,竟然都能被面试官虐的这么惨?