oracle数据库查询,sql没问题,数据库也有数据,方法没错,项目运行就是查不出数据
2017-12-12 21:18
876 查看
这是我参与做的第一个商业项目,采用的是springboot+ mybatis-plus开发的。数据库采用的是oracle。
这天我做了一个方法是根据两个字段查询数据库的数据列表,其中一个字段是类型(type) 。方法很简单,不一会儿就做出来了,这里不得不感叹mybatis-plus的强大,代码量很小!接下来就是测试了,由于数据库已经有一条测试数据,所以直接启动项目进行测试,可是结果查不出结果,页面不报错,控制台也没有报错只是说查询结果为空。
接下来就是排查过程了,查看数据库数据 确实有数据,把控制台打印出来的sql放到数据库中运行,能查到结果,debug断点测试,参数能正常传入!难道是方法错了?刚好同项目组有个同事 叶子做类似的一个方法 也是根据两个字段查询数据库的数据列表,并且也有一个字段是类型(type),我们这个项目数据库都是有同一个同事设计的,所以type的类型都是一样的 。可是同事做的类似的方法却能查出来数据。因为是用的mybatis-plus的条件构造器,所以,方法几乎一样。所以方法应该也没问题。各种方法都试过了没有答案!刚好这时候同事的第二个累死的方法做出来也是查不出来数据,也是相同的情况,参数中有一个type。会不会问题就出在这个type上啊,然后我吧type参数去掉用另外一个参数查询,结果是可以查到数据。那么问题出来了,就是出在这个type上了!
仔细研究一下这几个entity中的type属性 没什么问题,会不会是数据库有问题啊 ?基于对设计数据库同事技术的信任,加之之前数据库意志没出现过问题,所以之前一直没往这方面考虑,仔细研究发现每个表中type字段的数据类型是char(6),定长六位字符,于是豁然开朗!我这同事 是“智者千虑,偶有一失”啊。我的数据库表中存储的type值只可能是四个,即 1.2.3.4,代表四种类型。都不足六位字符,所以被空格补齐,难怪查不出数据!
解决办法:
1.沟通构建数据库的同事,把type类型更改为varchar(),并且删除之前的测试数据 ,重新录入测试数据
2.数据库不做更改,但是在sql语句中 where之后的出问题的条件字段做处理 如我的处理方法: 。。。where trim(type)=#{type} 。。。(该方法不适用mybatis-plus的条件构造器,适用手写的sql)
第一次写博客 有什么错误 欢迎大神批评指正。谢谢!望大家避免类似的坑。同时祝各位大神程序畅行一路无bug!
这天我做了一个方法是根据两个字段查询数据库的数据列表,其中一个字段是类型(type) 。方法很简单,不一会儿就做出来了,这里不得不感叹mybatis-plus的强大,代码量很小!接下来就是测试了,由于数据库已经有一条测试数据,所以直接启动项目进行测试,可是结果查不出结果,页面不报错,控制台也没有报错只是说查询结果为空。
接下来就是排查过程了,查看数据库数据 确实有数据,把控制台打印出来的sql放到数据库中运行,能查到结果,debug断点测试,参数能正常传入!难道是方法错了?刚好同项目组有个同事 叶子做类似的一个方法 也是根据两个字段查询数据库的数据列表,并且也有一个字段是类型(type),我们这个项目数据库都是有同一个同事设计的,所以type的类型都是一样的 。可是同事做的类似的方法却能查出来数据。因为是用的mybatis-plus的条件构造器,所以,方法几乎一样。所以方法应该也没问题。各种方法都试过了没有答案!刚好这时候同事的第二个累死的方法做出来也是查不出来数据,也是相同的情况,参数中有一个type。会不会问题就出在这个type上啊,然后我吧type参数去掉用另外一个参数查询,结果是可以查到数据。那么问题出来了,就是出在这个type上了!
仔细研究一下这几个entity中的type属性 没什么问题,会不会是数据库有问题啊 ?基于对设计数据库同事技术的信任,加之之前数据库意志没出现过问题,所以之前一直没往这方面考虑,仔细研究发现每个表中type字段的数据类型是char(6),定长六位字符,于是豁然开朗!我这同事 是“智者千虑,偶有一失”啊。我的数据库表中存储的type值只可能是四个,即 1.2.3.4,代表四种类型。都不足六位字符,所以被空格补齐,难怪查不出数据!
解决办法:
1.沟通构建数据库的同事,把type类型更改为varchar(),并且删除之前的测试数据 ,重新录入测试数据
2.数据库不做更改,但是在sql语句中 where之后的出问题的条件字段做处理 如我的处理方法: 。。。where trim(type)=#{type} 。。。(该方法不适用mybatis-plus的条件构造器,适用手写的sql)
第一次写博客 有什么错误 欢迎大神批评指正。谢谢!望大家避免类似的坑。同时祝各位大神程序畅行一路无bug!
相关文章推荐
- sql语句没问题,在数据库运行ok ,也查出了数据,但就是显示的时候报空指针异常..
- Oracl数据库管理方面的资料(查询sga,查看oracle数据库名称sid,查看oracle数据库名称,查看表空间,修改表空间名称,数据库管理,sqlPlus数据显示)
- 写个单线程读写xml文件并保存数据到数据库(公司xml文件是项目运行方法的日志)
- sql在不同数据库查询前几条数据的方法
- SQL、MySQL、Oracle、 Sqlite、Informix数据库查询指定条数数据的方法
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)
- 那些满脑子只考虑后台数据库的人他整天研究的就是针对自己查询一些数据的sql语句
- SQL、MySQL、Oracle、 Sqlite、Informix数据库查询指定条数数据的方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- oracle数据库加ssm框架出现SQL语句数据库可以查到数据,项目中查不到的问题
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- Spring mvc + mybatis web项目当系统启动时运行某方法查询数据库内容
- 数据库时间段分组查询解决方法和数据转储方法
- 将ORACLE数据库(或是其它任何数据库)的数据倒入到EXCEL中的方法
- sql查询数据库一个表的数据行数
- 在数据库表中分页查询数据的SQL
- SQL查询遍历数据方法一 [ 临时表 + While循环]
- Sql查询当天数据的方法