为啥mybatis生成的sql语句可以正确执行,但是返回结果却为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥mybatis生成的sql语句可以正确执行,但是返回结果却为空相关的知识,希望对你有一定的参考价值。

这个很大的原因是你数据库中本身执行的改sql返回的就是空,你可以把改sql复制出来直接放到数据库中执行一次 参考技术A sql语句贴出来,部分函数会影响数据,你可以看到有个orderId=0,表示执行你的sql在数据库里面能查到数据,只不过不是正常的结果。

JDBCibatis(mybatis)Hibernate有什么不同?

①JDBC编程流程固定,同时将sql语句和java代码混在了一起,经常需要拼凑sql语句,细节很繁琐;

②ibatis(mybatis)它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。但是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

③Hibernate对象/关系映射能力强,数据库无关性好,因为hibernate自动生成sql语句,我们无法控制该语句,我们就无法去写特定的高效率的sql。对于一些不太复杂的sql查询,hibernate可以很好帮我们完成,但是,对于特别复杂的查询,hibernate就很难适应了,这时候用ibatis就是不错的选择,因为ibatis还是由我们自己写sql语句。

以上是关于为啥mybatis生成的sql语句可以正确执行,但是返回结果却为空的主要内容,如果未能解决你的问题,请参考以下文章

mybatis为啥执行select语句是,返回的结果都是空的

如何正确理解Mybatis

mybatis 中用insert into select ..... 报错命令未正确结束,但把这句sql放到plsql中执行正常

mybatis~3

Mybatis与Hibernate不同处

mybatis与hibernate的不同